Defining a section that isn't file-backed

Mike Hearn mike@theoretic.com
Thu Feb 26 18:11:00 GMT 2004


On Thu, 2004-02-26 at 15:34, Ian Lance Taylor wrote:
> The "a" flag does not imply write access.
> 
> To be careful about terminology, it is the segment which mapped rwx.
> objdump -p prints out segments, objdump -h prints out sections.  To
> find out why the segment is rwx, you have to look at all the sections
> which are being incorporated into the segment.  The linker map file,
> generated by -Map, can show you all the input sections being
> incorporated into the output section.  Then you need to examine
> addresses to see which output sections are being incorporated into the
> segment.

I did so, it appears there is only one section being assigned to that
segment which is how I want it. I really cannot see what's going wrong
here, all the output of objdump/readelf looks correct. I've embedded the
mapfile and linker script at the end of this email and here is the
inline asm I'm using:

asm("\t.section .wine.loadarea, \"a\", @nobits\n");
asm("\t.zero 0x10000000\n"); /* 256mb allocation */

Can you see what might be going wrong? The output of objdump -h looks
fine:

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .wine.loadarea 10000000  00400000  00400000  00001000  2**0
                  ALLOC, READONLY

... as does objdump -p:

    LOAD off    0x00001000 vaddr 0x00400000 paddr 0x00400000 align 2**12
         filesz 0x00000000 memsz 0x10000000 flags r--

Here is the script and mapfile:

Many thanks for any insights you can offer
thanks -mike

-------------------------------------------------------------------------

/* Script for -z combreloc: combine and sort reloc sections */
OUTPUT_FORMAT("elf32-i386", "elf32-i386",
	      "elf32-i386")
OUTPUT_ARCH(i386)
ENTRY(_start)
SEARCH_DIR("/usr/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib");

MEMORY
{
 	before (rxai) : ORIGIN =   0x000400, LENGTH = 0x400000 /* 0x400 is room for program headers */
 	loadarea      : ORIGIN =   0x400000, LENGTH = 256M
        after (rxai)  : ORIGIN = 0x10400000, LENGTH = 0xe0c00000
}


PHDRS
{
  headers   PT_PHDR PHDRS ;
  interp    PT_INTERP ;
  text      PT_LOAD FILEHDR PHDRS ;
  data      PT_LOAD ;
  dynamic   PT_DYNAMIC ;
  loadarea  PT_LOAD;
}
   

SECTIONS
{
  /* reserve PE load area */
  .wine.loadarea : { KEEP (*(.wine.loadarea)) } >loadarea :loadarea


  /* Read-only sections, merged into text segment: */
  . = 0x08048000 + SIZEOF_HEADERS;
  .interp         : { *(.interp) } :interp :text
  .hash           : { *(.hash) } :text
  .dynsym         : { *(.dynsym) }
  .dynstr         : { *(.dynstr) }
  .gnu.version    : { *(.gnu.version) }
  .gnu.version_d  : { *(.gnu.version_d) }
  .gnu.version_r  : { *(.gnu.version_r) }
  .rel.dyn        :
    {
      *(.rel.init)
      *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
      *(.rel.fini)
      *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
      *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
      *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
      *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
      *(.rel.ctors)
      *(.rel.dtors)
      *(.rel.got)
      *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)
    }
  .rela.dyn       :
    {
      *(.rela.init)
      *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
      *(.rela.fini)
      *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
      *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
      *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
      *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
      *(.rela.ctors)
      *(.rela.dtors)
      *(.rela.got)
      *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)
    }
  .rel.plt        : { *(.rel.plt) }
  .rela.plt       : { *(.rela.plt) }
  
  .init           :
  {
    KEEP (*(.init))
  } :text =0x90909090
  
  .plt            : { *(.plt) }
  
  .text           :
  {
    *(.text .stub .text.* .gnu.linkonce.t.*)
    /* .gnu.warning sections are handled specially by elf32.em.  */
    *(.gnu.warning)
  } =0x90909090
  
  .fini           :
  {
    KEEP (*(.fini))
  } =0x90909090
  
  PROVIDE (__etext = .);
  PROVIDE (_etext = .);
  PROVIDE (etext = .);
  .rodata         : { *(.rodata .rodata.* .gnu.linkonce.r.*) }
  .rodata1        : { *(.rodata1) }
  .eh_frame_hdr : { *(.eh_frame_hdr) }
  .eh_frame       : ONLY_IF_RO { KEEP (*(.eh_frame)) }
  .gcc_except_table   : ONLY_IF_RO { *(.gcc_except_table) }
  /* Adjust the address for the data segment.  We want to adjust up to
     the same address within the page on the next page up.  */
  . = ALIGN (0x1000) - ((0x1000 - .) & (0x1000 - 1)); . = DATA_SEGMENT_ALIGN (0x1000, 0x1000);
  /* Ensure the __preinit_array_start label is properly aligned.  We
     could instead move the label definition inside the section, but
     the linker would then create the section even if it turns out to
     be empty, which isn't pretty.  */
  . = ALIGN(32 / 8);
  PROVIDE (__preinit_array_start = .);
  .preinit_array     : { *(.preinit_array) }
  PROVIDE (__preinit_array_end = .);
  PROVIDE (__init_array_start = .);
  .init_array     : { *(.init_array) }
  PROVIDE (__init_array_end = .);
  PROVIDE (__fini_array_start = .);
  .fini_array     : { *(.fini_array) }
  PROVIDE (__fini_array_end = .);
  
  .data           :
  {
    *(.data .data.* .gnu.linkonce.d.*)
    SORT(CONSTRUCTORS)
  } :data
  
  .data1          : { *(.data1) }
  .tdata	  : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
  .tbss		  : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) }
  .eh_frame       : ONLY_IF_RW { KEEP (*(.eh_frame)) }
  .gcc_except_table   : ONLY_IF_RW { *(.gcc_except_table) }
  .dynamic        : { *(.dynamic) } :data :dynamic
  .ctors          :
  {
    /* gcc uses crtbegin.o to find the start of
       the constructors, so we make sure it is
       first.  Because this is a wildcard, it
       doesn't matter if the user does not
       actually link against crtbegin.o; the
       linker won't look for a file to match a
       wildcard.  The wildcard also means that it
       doesn't matter which directory crtbegin.o
       is in.  */
    KEEP (*crtbegin*.o(.ctors))
    /* We don't want to include the .ctor section from
       from the crtend.o file until after the sorted ctors.
       The .ctor section from the crtend file contains the
       end of ctors marker and it must be last */
    KEEP (*(EXCLUDE_FILE (*crtend*.o ) .ctors))
    KEEP (*(SORT(.ctors.*)))
    KEEP (*(.ctors))
  } :data
  .dtors          :
  {
    KEEP (*crtbegin*.o(.dtors))
    KEEP (*(EXCLUDE_FILE (*crtend*.o ) .dtors))
    KEEP (*(SORT(.dtors.*)))
    KEEP (*(.dtors))
  } 
  .jcr            : { KEEP (*(.jcr)) } 
  .got            : { *(.got.plt) *(.got) }
  _edata = .;
  PROVIDE (edata = .);
  __bss_start = .;
  .bss            :
  {
   *(.dynbss)
   *(.bss .bss.* .gnu.linkonce.b.*)
   *(COMMON)
   /* Align here to ensure that the .bss section occupies space up to
      _end.  Align after .bss to ensure correct alignment even if the
      .bss section disappears because there are no input sections.  */
   . = ALIGN(32 / 8);
  }
  . = ALIGN(32 / 8);
    
  _end = .;
  
  PROVIDE (end = .);
  
  . = DATA_SEGMENT_END (.);
  /* Stabs debugging sections.  */
  .stab          0 : { *(.stab) }
  .stabstr       0 : { *(.stabstr) }
  .stab.excl     0 : { *(.stab.excl) }
  .stab.exclstr  0 : { *(.stab.exclstr) }
  .stab.index    0 : { *(.stab.index) }
  .stab.indexstr 0 : { *(.stab.indexstr) }
  .comment       0 : { *(.comment) }
  /* DWARF debug sections.
     Symbols in the DWARF debugging sections are relative to the beginning
     of the section so we begin them at 0.  */
  /* DWARF 1 */
  .debug          0 : { *(.debug) }
  .line           0 : { *(.line) }
  /* GNU DWARF 1 extensions */
  .debug_srcinfo  0 : { *(.debug_srcinfo) }
  .debug_sfnames  0 : { *(.debug_sfnames) }
  /* DWARF 1.1 and DWARF 2 */
  .debug_aranges  0 : { *(.debug_aranges) }
  .debug_pubnames 0 : { *(.debug_pubnames) }
  /* DWARF 2 */
  .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
  .debug_abbrev   0 : { *(.debug_abbrev) }
  .debug_line     0 : { *(.debug_line) }
  .debug_frame    0 : { *(.debug_frame) }
  .debug_str      0 : { *(.debug_str) }
  .debug_loc      0 : { *(.debug_loc) }
  .debug_macinfo  0 : { *(.debug_macinfo) }
  /* SGI/MIPS DWARF 2 extensions */
  .debug_weaknames 0 : { *(.debug_weaknames) }
  .debug_funcnames 0 : { *(.debug_funcnames) }
  .debug_typenames 0 : { *(.debug_typenames) }
  .debug_varnames  0 : { *(.debug_varnames) }
  /DISCARD/ : { *(.note.GNU-stack) }
}

-------------------------------------------------------------------------

Archive member included because of file (symbol)

/usr/lib/libc_nonshared.a(elf-init.oS)
                              /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o (__libc_csu_init)

Memory Configuration

Name             Origin             Length             Attributes
before           0x00000400         0x00400000         axrl
loadarea         0x00400000         0x10000000
after            0x10400000         0xe0c00000         axrl
*default*        0x00000000         0xffffffff

Linker script and memory map

LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crti.o
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtbegin.o

.wine.loadarea  0x00400000 0x10000000
 *(.wine.loadarea)
 .wine.loadarea
                0x00400000 0x10000000 /tmp/cco1wFJN.o
                0x080480f4                . = (0x8048000 + SIZEOF_HEADERS)

.interp         0x00000400       0x13
 *(.interp)
 .interp        0x00000400       0x13 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o

.note.ABI-tag   0x00000414       0x20
 .note.ABI-tag  0x00000414       0x20 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o

.hash           0x00000434       0x90
 *(.hash)
 .hash          0x00000434       0x90 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o

.dynsym         0x000004c4      0x110
 *(.dynsym)
 .dynsym        0x000004c4      0x110 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o

.dynstr         0x000005d4      0x131
 *(.dynstr)
 .dynstr        0x000005d4      0x131 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o

.gnu.version    0x00000706       0x22
 *(.gnu.version)
 .gnu.version   0x00000706       0x22 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o

.gnu.version_d
 *(.gnu.version_d)

.gnu.version_r  0x00000728       0x30
 *(.gnu.version_r)
 .gnu.version_r
                0x00000728       0x30 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o

.rel.dyn        0x00000758        0x8
 *(.rel.init)
 *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*)
 *(.rel.fini)
 *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*)
 *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*)
 *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*)
 *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*)
 *(.rel.ctors)
 *(.rel.dtors)
 *(.rel.got)
 .rel.got       0x00000758        0x8 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o
 *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*)

.rela.dyn
 *(.rela.init)
 *(.rela.text .rela.text.* .rela.gnu.linkonce.t.*)
 *(.rela.fini)
 *(.rela.rodata .rela.rodata.* .rela.gnu.linkonce.r.*)
 *(.rela.data .rela.data.* .rela.gnu.linkonce.d.*)
 *(.rela.tdata .rela.tdata.* .rela.gnu.linkonce.td.*)
 *(.rela.tbss .rela.tbss.* .rela.gnu.linkonce.tb.*)
 *(.rela.ctors)
 *(.rela.dtors)
 *(.rela.got)
 *(.rela.bss .rela.bss.* .rela.gnu.linkonce.b.*)

.rel.plt        0x00000760       0x30
 *(.rel.plt)
 .rel.plt       0x00000760       0x30 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o

.rela.plt
 *(.rela.plt)

.init           0x00000790       0x17
 *(.init)
 .init          0x00000790        0xb /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crti.o
                0x00000790                _init
 .init          0x0000079b        0x5 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtbegin.o
 .init          0x000007a0        0x5 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtend.o
 .init          0x000007a5        0x2 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crtn.o

.plt            0x000007a8       0x70
 *(.plt)
 .plt           0x000007a8       0x70 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o
                0x000007b8                fgets@@GLIBC_2.0
                0x000007c8                __libc_start_main@@GLIBC_2.0
                0x000007d8                printf@@GLIBC_2.0
                0x000007e8                sscanf@@GLIBC_2.0
                0x000007f8                memset@@GLIBC_2.0
                0x00000808                fopen@@GLIBC_2.1

.text           0x00000818      0x31c
 *(.text .stub .text.* .gnu.linkonce.t.*)
 .text          0x00000818       0x24 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o
                0x00000818                _start
 .text          0x0000083c       0x22 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crti.o
 *fill*         0x0000085e        0x2 90909090
 .text          0x00000860       0x66 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtbegin.o
 *fill*         0x000008c6        0x2 90909090
 .text          0x000008c8      0x1bc /tmp/cco1wFJN.o
                0x000008c8                printmaps
                0x0000093e                main
 .text          0x00000a84       0x8c /usr/lib/libc_nonshared.a(elf-init.oS)
                0x00000acc                __libc_csu_fini
                0x00000a84                __libc_csu_init
 .text          0x00000b10       0x24 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtend.o
 *(.gnu.warning)

.fini           0x00000b34       0x1b
 *(.fini)
 .fini          0x00000b34       0x11 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crti.o
                0x00000b34                _fini
 .fini          0x00000b45        0x5 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtbegin.o
 .fini          0x00000b4a        0x5 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crtn.o
                0x00000b4f                PROVIDE (__etext, .)
                0x00000b4f                PROVIDE (_etext, .)
                0x00000b4f                PROVIDE (etext, .)

.rodata         0x00000b60       0x9f
 *(.rodata .rodata.* .gnu.linkonce.r.*)
 .rodata        0x00000b60        0x8 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o
                0x00000b60                _fp_hw
                0x00000b64                _IO_stdin_used
 *fill*         0x00000b68       0x18 00
 .rodata        0x00000b80       0x7f /tmp/cco1wFJN.o

.rodata1
 *(.rodata1)

.eh_frame_hdr
 *(.eh_frame_hdr)

.eh_frame       0x00000c00        0x4
 *(.eh_frame)
 .eh_frame      0x00000c00        0x4 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtend.o

.gcc_except_table
 *(.gcc_except_table)
                0x00000c04                . = (ALIGN (0x1000) - ((0x1000 - .) & 0xfff))
                0x00001c04                . = (0x1000 DATA_SEGMENT_ALIGN 0x1000)
                0x00001c04                . = ALIGN (0x4)
                0x00001c04                PROVIDE (__preinit_array_start, .)

.preinit_array
 *(.preinit_array)
                0x00001c04                PROVIDE (__preinit_array_end, .)
                0x00001c04                PROVIDE (__init_array_start, .)

.init_array
 *(.init_array)
                0x00001c04                PROVIDE (__init_array_end, .)
                0x00001c04                PROVIDE (__fini_array_start, .)

.fini_array
 *(.fini_array)
                0x00001c04                PROVIDE (__fini_array_end, .)

.data           0x00000c04        0xc
 *(.data .data.* .gnu.linkonce.d.*)
 .data          0x00000c04        0x4 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o
                0x00000c04                data_start
                0x00000c04                __data_start
 .data          0x00000c08        0x8 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtbegin.o
                0x00000c08                __dso_handle

.data1
 *(.data1)

.tdata
 *(.tdata .tdata.* .gnu.linkonce.td.*)

.tbss
 *(.tbss .tbss.* .gnu.linkonce.tb.*)
 *(.tcommon)

.eh_frame
 *(.eh_frame)

.gcc_except_table
 *(.gcc_except_table)

.dynamic        0x00000c10      0x108
 *(.dynamic)
 .dynamic       0x00000c10      0x108 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o
                0x00000c10                _DYNAMIC

.ctors          0x00000d18        0x8
 *crtbegin*.o(.ctors)
 *(EXCLUDE_FILE(*crtend*.o) .ctors)
 .ctors         0x00000d18        0x4 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtbegin.o
 *(SORT(.ctors.*))
 *(.ctors)
 .ctors         0x00000d1c        0x4 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtend.o

.dtors          0x00000d20        0x8
 *crtbegin*.o(.dtors)
 *(EXCLUDE_FILE(*crtend*.o) .dtors)
 .dtors         0x00000d20        0x4 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtbegin.o
 *(SORT(.dtors.*))
 *(.dtors)
 .dtors         0x00000d24        0x4 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtend.o

.jcr            0x00000d28        0x4
 *(.jcr)
 .jcr           0x00000d28        0x4 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtend.o

.got            0x00000d2c       0x28
 *(.got.plt)
 .got.plt       0x00000d2c       0x24 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o
                0x00000d2c                _GLOBAL_OFFSET_TABLE_
 *(.got)
 .got           0x00000d50        0x4 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o
                0x00000d54                _edata = .
                0x00000d54                PROVIDE (edata, .)
                0x00000d54                __bss_start = .

.bss            0x00000d54        0x4
 *(.dynbss)
 *(.bss .bss.* .gnu.linkonce.b.*)
 .bss           0x00000d54        0x1 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtbegin.o
 *fill*         0x00000d55        0x3 00
 *(COMMON)
                0x00000d58                . = ALIGN (0x4)
                0x00000d58                . = ALIGN (0x4)
                0x00000d58                _end = .
                0x00000d58                PROVIDE (end, .)
                0x00000d58                . = DATA_SEGMENT_END (.)

.stab
 *(.stab)

.stabstr
 *(.stabstr)

.stab.excl
 *(.stab.excl)

.stab.exclstr
 *(.stab.exclstr)

.stab.index
 *(.stab.index)

.stab.indexstr
 *(.stab.indexstr)

.comment        0x00000000      0x132
 *(.comment)
 .comment       0x00000000       0x33 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crt1.o
 .comment       0x00000033       0x33 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crti.o
 .comment       0x00000066       0x33 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtbegin.o
 .comment       0x00000099       0x33 /tmp/cco1wFJN.o
 .comment       0x000000cc       0x33 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtend.o
 .comment       0x000000ff       0x33 /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crtn.o

.debug
 *(.debug)

.line
 *(.line)

.debug_srcinfo
 *(.debug_srcinfo)

.debug_sfnames
 *(.debug_sfnames)

.debug_aranges
 *(.debug_aranges)

.debug_pubnames
 *(.debug_pubnames)

.debug_info
 *(.debug_info .gnu.linkonce.wi.*)

.debug_abbrev
 *(.debug_abbrev)

.debug_line
 *(.debug_line)

.debug_frame
 *(.debug_frame)

.debug_str
 *(.debug_str)

.debug_loc
 *(.debug_loc)

.debug_macinfo
 *(.debug_macinfo)

.debug_weaknames
 *(.debug_weaknames)

.debug_funcnames
 *(.debug_funcnames)

.debug_typenames
 *(.debug_typenames)

.debug_varnames
 *(.debug_varnames)

/DISCARD/
 *(.note.GNU-stack)
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libm.so
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libdl.so
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libncurses.so
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libpthread.so
START GROUP
LOAD /lib/libpthread.so.0
LOAD /usr/lib/libpthread_nonshared.a
END GROUP
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libssl.so
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libpam.so
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libuuid.so
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libtermcap.so
LOAD /tmp/cco1wFJN.o
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/libgcc.a
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/libgcc_eh.a
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../libc.so
START GROUP
LOAD /lib/libc.so.6
LOAD /usr/lib/libc_nonshared.a
END GROUP
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/libgcc.a
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/libgcc_eh.a
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/crtend.o
LOAD /usr/lib/gcc-lib/i386-redhat-linux/3.3.2/../../../crtn.o
OUTPUT(lds1 elf32-i386)




More information about the Binutils mailing list