module files when there's no interface change

module files when there's no interface change

Hello everyone,

I'm working on a large program involving hundreds of files. I work entirely from the command line and maintain my own make files. To avoid a compilation cascsde when I change the workings of a module but don't modify its interface, I've developed a make system that saves a module's mod file, compares it with the one generated by the compilation, and then restores the old one, with its original time and date, if it's identical to the new one.

I've make a very, very minor modification to the source code of one module, one that I'm absolutely positive makes no change to its interface. But when I make my program, the new and saved mod files differ, and furthermore many subsequently generated mod files also differ from their last version. The message I get for all is like this:

lensput.mod lensput.last.mod differ: char 45, line 1

(To compare the files I use the cmp utility provided with the MKS Toolkit, which provides a Unix-like environment on a Windows machine.)

For every comparison the difference is always char 45, line 1, and indeed when I look at the two files using notepad there appears to be a difference only in the first line. (The file is a binary file so it's impossible to decipher the difference.)

Anyone have any idea what the difference is or how to avoid it.

I'm using compiler version 6.6. Here are my compiler options:


/noalign:commons /noalign:dcommons
/align:records /noalign:sequence
/noalign:rec1byte /noalign:rec2byte
/noalign:rec4byte /noalign:rec8byte
/altparam /annotations:code
/annotations:detail /annotations:feedback
/annotations:inlining /annotations:loop_transforms
/annotations:loop_unrolling /annotations:prefetching
/annotations:shrinkwrapping /annotations:software_pipelining
/annotations:tail_calls /annotations:tail_recursion
/arch:k7 /noasmattributes:machine
/noasmattributes:source /assume:accuracy_sensitive
/noassume:buffered_io /noassume:byterecl
/noassume:cstring /noassume:dummy_aliases
/noassume:minus0 /assume:protect_constants
/assume:source_include /noassume:underscore
/noassume:2underscores /noautomatic
/nobintext /ccdefault:default
/nocheck:arg_temp_created /nocheck:bounds
/nocheck:flawed_pentium /nocheck:format
/nocheck:output_conversion /nocheck:overflow
/nocheck:power /nocheck:underflow
/convert:native /D:_WIN32=1
/D:_DF_VER=660 /D:_VF_VER=660
/D:_X86_=1 /D:_M_IX86=500
/D:_INTEGRAL_MAX_BITS=32 /double_size:64
/nod_lines /error_limit:30
/extend_source:72 /nof66
/nof77rtl /nofast
/nofltconsist /nofpscomp:filesfromcmd
/nofpscomp:general /nofpscomp:ioformat
/nofpscomp:ldio_spacing /fpscomp:libs
/fpe3 /free
/g1 /Gt0
/iface:stdref /nointconstant
/integer_size:32 /libdir:automatic
/libdir:user /nolibs_dll
/nomachine_code /math_library:fast
/mixed_str_len_arg /nomodule
/names:uppercase /noinclude
/O4 /inline:speed
/notransform_loops /nopipeline
/tune:k7 /unroll:0
/nopad_source /real_size:32
/norecursive /reentrancy:none
/noshow:include /show:map
/stand:f95 /nosyntax_only
/notraceback /novms
/warn:alignments /warn:argument_checking
/warn:declarations /nowarn:errors
/warn:general /nowarn:granularity
/nowarn:ignore_loc /nowarn:stderrors
/nowarn:truncated_source /warn:uncalled
/warn:uninitialized /warn:unused



3 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hi, Norm..

There is a timestamp written into the .mod file - that's probably what you are seeing. The header is 168 bytes long - you probably want to ignore everything in the header after the first 12 bytes.


Retired 12/31/2016

Thank you Steve.


Leave a Comment

Please sign in to add a comment. Not a member? Join today