[m-rev.] for review: granularity control

Zoltan Somogyi zs at csse.unimelb.edu.au
Fri Nov 3 19:06:55 AEDT 2006


On 03-Nov-2006, Zoltan Somogyi <zs at csse.unimelb.edu.au> wrote:
> I am doing an asm_fast.gc.par
> bootcheck of an unmodified workspace now to see whether it is related to my
> change.

The unmodified workspace also crashes on all tests, so I am committing this
change.

With lmc, the output of ldd on the executable is

	linux-gate.so.1 =>  (0xffffe000)
	libm.so.6 => /lib/tls/i686/cmov/libm.so.6 (0xb7f71000)
	libnsl.so.1 => /lib/tls/i686/cmov/libnsl.so.1 (0xb7f5c000)
	libdl.so.2 => /lib/tls/i686/cmov/libdl.so.2 (0xb7f58000)
	libreadline.so.5 => /lib/libreadline.so.5 (0xb7f2a000)
	libncurses.so.5 => /lib/libncurses.so.5 (0xb7ee9000)
	libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0xb7ed7000)
	libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0xb7da8000)
	/lib/ld-linux.so.2 (0xb7fa6000)

For the executables created by bootcheck, ldd says they are not dynamic
executable; the file command also says they are statically linked.

The linking command invoked by bootcheck is

/home/zs/mer/ws32/stage2/scripts/ml --grade asm_fast.gc.par      --no-mercury-stdlib-dir  --trace-init-file /home/zs/mer/ws32/stage2/browser/mer_browser.init --trace-init-file /home/zs/mer/ws32/stage2/mdbcomp/mer_mdbcomp.init        --    -o deriv2 deriv2_init.o \                 deriv2.o \
                 /home/zs/mer/ws32/stage2/trace/libmer_trace.a /home/zs/mer/ws32/stage2/browser/libmer_browser.a /home/zs/mer/ws32/stage2/mdbcomp/libmer_mdbcomp.a /home/zs/mer/ws32/stage2/library/libmer_std.a /home/zs/mer/ws32/stage2/runtime/libmer_rt.a /home/zs/mer/ws32/stage2/boehm_gc/libpar_gc.a 

The runtime library has a definition for MR_thread_engine_base. The nm output
reads:

	00000000 B MR_thread_engine_base

This shows that the symbol is the BSS section, and the symbol value is zero.
The last part is worrying, because mercury_thread.o, the module that defines
MR_thread_engine_base, has another variable (MR_debug_threads) that is also
shown as having section BSS symbol value 0. They cannot both be stored at
the same offset in mercury_thread.o's bss section. Of course,
MR_thread_engine_base is thread local while MR_debug_threads isn't,
but nm doesn't show that. objdump does, but I am not sure I know what
its output is telling me, since the man page doesn't say. I am attaching
the output in case anyone knows.

Does any of this ring a bell, Peter?

Zoltan.
-------------- next part --------------

mercury_thread.o:     file format elf32-i386

SYMBOL TABLE:
00000000 l    df *ABS*	00000000 mercury_thread.c
00000000 l    d  .text	00000000 .text
00000000 l    d  .data	00000000 .data
00000000 l    d  .bss	00000000 .bss
00000000 l    d  .debug_abbrev	00000000 .debug_abbrev
00000000 l    d  .debug_info	00000000 .debug_info
00000000 l    d  .debug_line	00000000 .debug_line
00000000 l    d  .rodata	00000000 .rodata
00000000 l     O .rodata	00000011 __PRETTY_FUNCTION__.4
00000000 l    d  .rodata.str1.1	00000000 .rodata.str1.1
00000000 l    d  .rodata.str1.4	00000000 .rodata.str1.4
000001f7 l     F .text	00000038 MR_create_thread_2
00000011 l     O .rodata	0000000e __PRETTY_FUNCTION__.3
0000001f l     O .rodata	00000010 __PRETTY_FUNCTION__.2
0000002f l     O .rodata	0000000f __PRETTY_FUNCTION__.1
0000003e l     O .rodata	0000000d __PRETTY_FUNCTION__.0
00000000 l    d  .tbss	00000000 .tbss
00000000 l    d  .debug_frame	00000000 .debug_frame
00000000 l    d  .debug_pubnames	00000000 .debug_pubnames
00000000 l    d  .debug_aranges	00000000 .debug_aranges
00000000 l    d  .debug_str	00000000 .debug_str
00000000 l    d  .note.GNU-stack	00000000 .note.GNU-stack
00000000 l    d  .comment	00000000 .comment
00000000 g     O .bss	00000004 MR_debug_threads
00000000 g     F .text	00000083 MR_create_thread
00000004       O *COM*	00000004 MR_primordial_thread
00000000         *UND*	00000000 MR_GC_malloc
00000000         *UND*	00000000 pthread_attr_init
00000000         *UND*	00000000 GC_pthread_create
00000000         *UND*	00000000 __assert_fail
00000000         *UND*	00000000 MR_fatal_error
00000083 g     F .text	00000174 MR_init_thread
00000000         *UND*	00000000 _GLOBAL_OFFSET_TABLE_
00000000 g       .tbss	00000004 MR_thread_engine_base
00000000         *UND*	00000000 MR_create_engine
00000000         *UND*	00000000 MR_sol_hp_var
00000000         *UND*	00000000 MR_min_hp_rec_var
00000000         *UND*	00000000 MR_min_sol_hp_rec_var
00000000         *UND*	00000000 MR_global_hp_var
00000000         *UND*	00000000 pthread_self
00000000         *UND*	00000000 _entry_MR_do_runnext
00000000         *UND*	00000000 MR_call_engine
00000000         *UND*	00000000 MR_destroy_engine
00000000         *UND*	00000000 MR_create_context
0000022f g     F .text	00000021 MR_finalize_thread_engine
00000000         *UND*	00000000 MR_finalize_engine
00000250 g     F .text	0000001d MR_destroy_thread
00000000         *UND*	00000000 pthread_exit
0000026d g     F .text	00000067 MR_mutex_lock
00000000         *UND*	00000000 stderr
00000000         *UND*	00000000 fprintf
00000000         *UND*	00000000 pthread_mutex_lock
000002d4 g     F .text	00000067 MR_mutex_unlock
00000000         *UND*	00000000 pthread_mutex_unlock
0000033b g     F .text	00000060 MR_cond_signal
00000000         *UND*	00000000 pthread_cond_broadcast
0000039b g     F .text	0000006e MR_cond_wait
00000000         *UND*	00000000 pthread_cond_wait
00000004       O *COM*	00000004 MR_exit_now
00000018       O *COM*	00000004 MR_global_lock
00000004       O *COM*	00000004 MR_exception_handler_key


RELOCATION RECORDS FOR [.text]:
OFFSET   TYPE              VALUE 
00000007 R_386_32          MR_primordial_thread
00000017 R_386_PC32        MR_GC_malloc
00000025 R_386_PC32        pthread_attr_init
00000037 R_386_32          .text
00000046 R_386_PC32        GC_pthread_create
00000057 R_386_32          .rodata
00000067 R_386_32          .rodata.str1.1
0000006e R_386_32          .rodata.str1.4
00000073 R_386_PC32        __assert_fail
0000007a R_386_32          .rodata.str1.1
0000007f R_386_PC32        MR_fatal_error
0000008e R_386_TLS_LE      MR_thread_engine_base
00000099 R_386_PC32        MR_create_engine
000000a4 R_386_TLS_LE      MR_thread_engine_base
000000b7 R_386_32          MR_sol_hp_var
000000c2 R_386_32          MR_min_hp_rec_var
000000cd R_386_32          MR_min_sol_hp_rec_var
000000d8 R_386_32          MR_global_hp_var
000000ec R_386_PC32        pthread_self
00000112 R_386_32          _entry_MR_do_runnext
00000117 R_386_PC32        MR_call_engine
00000122 R_386_PC32        MR_destroy_engine
00000186 R_386_32          MR_sol_hp_var
00000191 R_386_32          MR_min_hp_rec_var
0000019c R_386_32          MR_min_sol_hp_rec_var
000001a7 R_386_32          MR_global_hp_var
000001d7 R_386_32          .rodata.str1.1
000001dc R_386_PC32        MR_create_context
000001ee R_386_32          .rodata.str1.4
000001f3 R_386_PC32        MR_fatal_error
0000020c R_386_PC32        MR_init_thread
00000227 R_386_PC32        MR_init_thread
00000237 R_386_TLS_LE      MR_thread_engine_base
0000023e R_386_TLS_LE      MR_thread_engine_base
0000024a R_386_PC32        MR_finalize_engine
0000025d R_386_PC32        MR_destroy_engine
00000269 R_386_PC32        pthread_exit
00000274 R_386_PC32        pthread_self
0000027f R_386_32          .rodata.str1.1
0000028f R_386_32          stderr
0000029b R_386_PC32        fprintf
000002a6 R_386_PC32        pthread_mutex_lock
000002b4 R_386_32          .rodata
000002c4 R_386_32          .rodata.str1.1
000002cb R_386_32          .rodata.str1.1
000002d0 R_386_PC32        __assert_fail
000002db R_386_PC32        pthread_self
000002e6 R_386_32          .rodata.str1.1
000002f6 R_386_32          stderr
00000302 R_386_PC32        fprintf
0000030d R_386_PC32        pthread_mutex_unlock
0000031b R_386_32          .rodata
0000032b R_386_32          .rodata.str1.1
00000332 R_386_32          .rodata.str1.1
00000337 R_386_PC32        __assert_fail
00000342 R_386_PC32        pthread_self
0000034d R_386_32          .rodata.str1.1
00000356 R_386_32          stderr
00000362 R_386_PC32        fprintf
0000036d R_386_PC32        pthread_cond_broadcast
0000037b R_386_32          .rodata
0000038b R_386_32          .rodata.str1.1
00000392 R_386_32          .rodata.str1.1
00000397 R_386_PC32        __assert_fail
000003a2 R_386_PC32        pthread_self
000003ad R_386_32          .rodata.str1.1
000003bd R_386_32          stderr
000003c9 R_386_PC32        fprintf
000003db R_386_PC32        pthread_cond_wait
000003e9 R_386_32          .rodata
000003f9 R_386_32          .rodata.str1.1
00000400 R_386_32          .rodata.str1.1
00000405 R_386_PC32        __assert_fail


RELOCATION RECORDS FOR [.debug_info]:
OFFSET   TYPE              VALUE 
00000006 R_386_32          .debug_abbrev
0000000c R_386_32          .debug_line
00000010 R_386_32          .text
00000014 R_386_32          .text
00000018 R_386_32          .debug_str
0000001d R_386_32          .debug_str
00000021 R_386_32          .debug_str
00000026 R_386_32          .debug_str
00000031 R_386_32          .debug_str
0000003f R_386_32          .debug_str
00000046 R_386_32          .debug_str
0000004d R_386_32          .debug_str
00000054 R_386_32          .debug_str
0000005b R_386_32          .debug_str
00000062 R_386_32          .debug_str
00000069 R_386_32          .debug_str
00000074 R_386_32          .debug_str
00000081 R_386_32          .debug_str
00000088 R_386_32          .debug_str
0000008f R_386_32          .debug_str
0000009c R_386_32          .debug_str
000000a7 R_386_32          .debug_str
000000b9 R_386_32          .debug_str
000000c0 R_386_32          .debug_str
000000cb R_386_32          .debug_str
000000d6 R_386_32          .debug_str
000000ef R_386_32          .debug_str
0000010e R_386_32          .debug_str
0000011d R_386_32          .debug_str
00000125 R_386_32          .debug_str
00000134 R_386_32          .debug_str
00000143 R_386_32          .debug_str
0000014b R_386_32          .debug_str
00000159 R_386_32          .debug_str
00000168 R_386_32          .debug_str
00000179 R_386_32          .debug_str
00000183 R_386_32          .debug_str
0000018b R_386_32          .debug_str
00000199 R_386_32          .debug_str
000001a7 R_386_32          .debug_str
000001b5 R_386_32          .debug_str
000001c3 R_386_32          .debug_str
000001d1 R_386_32          .debug_str
000001df R_386_32          .debug_str
000001ed R_386_32          .debug_str
000001fb R_386_32          .debug_str
0000020c R_386_32          .debug_str
00000217 R_386_32          .debug_str
0000022a R_386_32          .debug_str
00000238 R_386_32          .debug_str
00000246 R_386_32          .debug_str
00000254 R_386_32          .debug_str
00000273 R_386_32          .debug_str
0000027e R_386_32          .debug_str
00000291 R_386_32          .debug_str
0000029f R_386_32          .debug_str
000002ad R_386_32          .debug_str
000002bb R_386_32          .debug_str
000002c9 R_386_32          .debug_str
000002d8 R_386_32          .debug_str
000002e3 R_386_32          .debug_str
000002ee R_386_32          .debug_str
000002fd R_386_32          .debug_str
00000305 R_386_32          .debug_str
00000314 R_386_32          .debug_str
00000323 R_386_32          .debug_str
00000332 R_386_32          .debug_str
00000341 R_386_32          .debug_str
00000350 R_386_32          .debug_str
0000035f R_386_32          .debug_str
0000036e R_386_32          .debug_str
0000037d R_386_32          .debug_str
0000038c R_386_32          .debug_str
0000039b R_386_32          .debug_str
000003aa R_386_32          .debug_str
000003b9 R_386_32          .debug_str
000003c8 R_386_32          .debug_str
000003d7 R_386_32          .debug_str
000003e6 R_386_32          .debug_str
000003f5 R_386_32          .debug_str
00000404 R_386_32          .debug_str
00000413 R_386_32          .debug_str
00000422 R_386_32          .debug_str
00000431 R_386_32          .debug_str
00000440 R_386_32          .debug_str
0000044f R_386_32          .debug_str
0000045e R_386_32          .debug_str
0000046d R_386_32          .debug_str
0000047c R_386_32          .debug_str
0000049e R_386_32          .debug_str
000004a9 R_386_32          .debug_str
000004b1 R_386_32          .debug_str
000004bf R_386_32          .debug_str
000004cd R_386_32          .debug_str
0000050e R_386_32          .debug_str
0000051d R_386_32          .debug_str
00000525 R_386_32          .debug_str
00000533 R_386_32          .debug_str
00000541 R_386_32          .debug_str
0000054f R_386_32          .debug_str
0000055d R_386_32          .debug_str
0000056b R_386_32          .debug_str
00000579 R_386_32          .debug_str
00000587 R_386_32          .debug_str
00000595 R_386_32          .debug_str
000005a3 R_386_32          .debug_str
000005b1 R_386_32          .debug_str
000005bf R_386_32          .debug_str
000005cd R_386_32          .debug_str
000005dc R_386_32          .debug_str
0000060d R_386_32          .debug_str
00000618 R_386_32          .debug_str
00000623 R_386_32          .debug_str
0000062e R_386_32          .debug_str
00000641 R_386_32          .debug_str
0000065e R_386_32          .debug_str
00000671 R_386_32          .debug_str
00000677 R_386_32          .debug_str
0000067e R_386_32          .debug_str
00000689 R_386_32          .debug_str
00000698 R_386_32          .debug_str
000006a0 R_386_32          .debug_str
000006ae R_386_32          .debug_str
000006bc R_386_32          .debug_str
000006ca R_386_32          .debug_str
000006d8 R_386_32          .debug_str
000006e6 R_386_32          .debug_str
000006f4 R_386_32          .debug_str
00000702 R_386_32          .debug_str
00000710 R_386_32          .debug_str
0000071e R_386_32          .debug_str
0000072c R_386_32          .debug_str
0000073a R_386_32          .debug_str
00000748 R_386_32          .debug_str
00000756 R_386_32          .debug_str
00000764 R_386_32          .debug_str
00000773 R_386_32          .debug_str
00000782 R_386_32          .debug_str
0000078a R_386_32          .debug_str
00000798 R_386_32          .debug_str
000007a6 R_386_32          .debug_str
000007bd R_386_32          .debug_str
000007c3 R_386_32          .debug_str
000007ca R_386_32          .debug_str
000007d5 R_386_32          .debug_str
000007e4 R_386_32          .debug_str
000007ec R_386_32          .debug_str
000007fa R_386_32          .debug_str
0000081b R_386_32          .debug_str
0000083a R_386_32          .debug_str
00000842 R_386_32          .debug_str
00000850 R_386_32          .debug_str
0000085e R_386_32          .debug_str
0000086d R_386_32          .debug_str
00000892 R_386_32          .debug_str
0000089b R_386_32          .debug_str
000008aa R_386_32          .debug_str
000008c0 R_386_32          .debug_str
000008d0 R_386_32          .debug_str
000008da R_386_32          .debug_str
000008e9 R_386_32          .debug_str
000008f9 R_386_32          .debug_str
00000909 R_386_32          .debug_str
00000919 R_386_32          .debug_str
00000929 R_386_32          .debug_str
00000939 R_386_32          .debug_str
00000949 R_386_32          .debug_str
00000959 R_386_32          .debug_str
00000981 R_386_32          .debug_str
00000992 R_386_32          .debug_str
0000099d R_386_32          .text
000009a1 R_386_32          .text
000009a8 R_386_32          .debug_str
000009b5 R_386_32          .debug_str
000009c3 R_386_32          .debug_str
000009de R_386_32          .debug_str
000009e9 R_386_32          .rodata
00000a15 R_386_32          .debug_str
00000a20 R_386_32          .text
00000a24 R_386_32          .text
00000a2b R_386_32          .debug_str
00000a47 R_386_32          .text
00000a4b R_386_32          .text
00000a50 R_386_32          .debug_str
00000a69 R_386_32          .debug_str
00000a74 R_386_32          .text
00000a78 R_386_32          .text
00000a7f R_386_32          .debug_str
00000a8d R_386_32          .debug_str
00000a9e R_386_32          .debug_str
00000aa5 R_386_32          .text
00000aa9 R_386_32          .text
00000ac3 R_386_32          .debug_str
00000aca R_386_32          .text
00000ace R_386_32          .text
00000ad5 R_386_32          .debug_str
00000af3 R_386_32          .debug_str
00000afa R_386_32          .text
00000afe R_386_32          .text
00000b05 R_386_32          .debug_str
00000b13 R_386_32          .debug_str
00000b2d R_386_32          .debug_str
00000b38 R_386_32          .rodata
00000b5e R_386_32          .debug_str
00000b65 R_386_32          .text
00000b69 R_386_32          .text
00000b70 R_386_32          .debug_str
00000b7e R_386_32          .debug_str
00000b98 R_386_32          .debug_str
00000ba3 R_386_32          .rodata
00000bc3 R_386_32          .debug_str
00000bca R_386_32          .text
00000bce R_386_32          .text
00000bd5 R_386_32          .debug_str
00000bf0 R_386_32          .debug_str
00000bfb R_386_32          .rodata
00000c21 R_386_32          .debug_str
00000c28 R_386_32          .text
00000c2c R_386_32          .text
00000c33 R_386_32          .debug_str
00000c41 R_386_32          .debug_str
00000c5c R_386_32          .debug_str
00000c67 R_386_32          .rodata
00000c82 R_386_32          .debug_str
00000c8f R_386_32          .debug_str
00000c9c R_386_32          .debug_str
00000ca9 R_386_32          .debug_str
00000cb7 R_386_32          .debug_str
00000cc5 R_386_32          .debug_str
00000cd3 R_386_32          .debug_str
00000ce1 R_386_32          .debug_str
00000cee R_386_32          .debug_str
00000cfb R_386_32          .debug_str
00000d08 R_386_32          .debug_str
00000d15 R_386_32          MR_debug_threads
00000d1a R_386_32          .debug_str
00000d27 R_386_32          MR_exit_now
00000d2c R_386_32          .debug_str
00000d39 R_386_32          MR_primordial_thread
00000d3e R_386_32          .debug_str
00000d4b R_386_32          MR_global_lock
00000d50 R_386_32          .debug_str
00000d5d R_386_32          MR_exception_handler_key
00000d62 R_386_32          .debug_str
00000d6f R_386_TLS_LDO_32  MR_thread_engine_base


RELOCATION RECORDS FOR [.debug_line]:
OFFSET   TYPE              VALUE 
00000190 R_386_32          .text


RELOCATION RECORDS FOR [.debug_frame]:
OFFSET   TYPE              VALUE 
00000018 R_386_32          .debug_frame
0000001c R_386_32          .text
00000030 R_386_32          .debug_frame
00000034 R_386_32          .text
00000048 R_386_32          .debug_frame
0000004c R_386_32          .text
00000060 R_386_32          .debug_frame
00000064 R_386_32          .text
00000078 R_386_32          .debug_frame
0000007c R_386_32          .text
00000090 R_386_32          .debug_frame
00000094 R_386_32          .text
000000a8 R_386_32          .debug_frame
000000ac R_386_32          .text
000000c0 R_386_32          .debug_frame
000000c4 R_386_32          .text
000000d8 R_386_32          .debug_frame
000000dc R_386_32          .text


RELOCATION RECORDS FOR [.debug_pubnames]:
OFFSET   TYPE              VALUE 
00000006 R_386_32          .debug_info


RELOCATION RECORDS FOR [.debug_aranges]:
OFFSET   TYPE              VALUE 
00000006 R_386_32          .debug_info
00000010 R_386_32          .text




More information about the reviews mailing list