[i386] Add explicit flags and type on all .section declarations
authorMichael Brown <mcb30@etherboot.org>
Sun, 15 Feb 2009 10:54:52 +0000 (10:54 +0000)
committerMichael Brown <mcb30@etherboot.org>
Sun, 15 Feb 2009 10:59:53 +0000 (10:59 +0000)
Try to avoid future problems caused by implicit section flags and/or
type information by instituting a policy that all .section
declarations must explicitly state the flags and type.

Most of this change was achieved using

    perl -pi \
      -e 's/".text"$/".text", "ax", \@progbits/ ; ' \
      -e 's/".text16"$/".text16", "ax", \@progbits/ ; ' \
      -e 's/".text16.null"$/".text16.null", "ax", \@progbits/ ; ' \
      -e 's/".text16.data"$/".text16.data", "aw", \@progbits/ ; ' \
      -e 's/".data"$/".data", "aw", \@progbits/ ; ' \
      -e 's/".data16"$/".data16", "aw", \@progbits/ ; ' \
      -e 's/".bss"$/".bss", "aw", \@nobits/ ; ' \
      -e 's/".bss16"$/".bss16", "aw", \@nobits/ ; ' \
      -e 's/".prefix"$/".prefix", "ax", \@progbits/ ; ' \
      -e 's/".prefix.lib"$/".prefix.lib", "awx", \@progbits/ ; ' \
      -e 's/".prefix.data"$/".prefix.data", "aw", \@progbits/ ; ' \
      -e 's/".weak"$/".weak", "a", \@nobits/ ; ' \
      `git grep -l '\.section'`

src/arch/i386/core/gdbidt.S
src/arch/i386/drivers/net/undiisr.S
src/arch/i386/firmware/pcbios/e820mangler.S
src/arch/i386/interface/pxe/pxe_entry.S
src/arch/i386/prefix/libprefix.S
src/arch/i386/prefix/nbiprefix.S
src/arch/i386/prefix/pxeprefix.S
src/arch/i386/transitions/librm.S
src/image/embed.S
src/tests/gdbstub_test.S

index 64c29e4..cd8b38a 100644 (file)
@@ -11,7 +11,7 @@
  * Interrupt Descriptor Table
  ****************************************************************************
  */
-       .section ".data16"
+       .section ".data16", "aw", @progbits
        .globl idtr
 idtr:
 idt_limit:
@@ -68,7 +68,7 @@ idt_fixed:
  * Destroys %ax, %bx, and %di.
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
        .code16
        .globl idt_init
 idt_init:
@@ -100,7 +100,7 @@ idt_init:
  * Interrupt handlers
  ****************************************************************************
  */
-       .section ".text"
+       .section ".text", "ax", @progbits
        .code32
 
 /* POSIX signal numbers for reporting traps to GDB */
index a6c6c38..2b31b41 100644 (file)
        
        .text
        .arch i386
-       .section ".text16", "ax", @progbits
-       .section ".data16", "aw", @progbits
        .code16
 
-       .section ".text16"
+       .section ".text16", "ax", @progbits
        .globl undiisr
 undiisr:
        
@@ -75,7 +73,7 @@ exit: /* Restore registers and return */
        popw    %ds
        iret
 
-       .section ".data16"
+       .section ".data16", "aw", @progbits
 undinet_params:
 status:                        .word   0
 funcflag:              .word   0
index 53e2d7c..4ba3fb1 100644 (file)
@@ -18,9 +18,6 @@
        
        .text
        .arch i386
-       .section ".text16", "ax", @progbits
-       .section ".data16", "aw", @progbits
-       .section ".text16.data", "aw", @progbits
        .code16
 
 #define SMAP 0x534d4150
@@ -62,7 +59,7 @@
  *
  ****************************************************************************
  */
-       .section ".data16"
+       .section ".data16", "aw", @progbits
        .align 16
        .globl hidemem_base
        .globl hidemem_umalloc
@@ -94,7 +91,7 @@ memory_windows_end:
  *  %ecx:%ebx  Length of windowed region
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
 window_region:
        /* Convert (start,len) to (start, end) */
        addl    %eax, %ebx
@@ -132,7 +129,7 @@ window_region:
  *  %ax                Modified memory above 1M in 1kB blocks
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
 patch_1m:
        pushal
        /* Convert to (start,len) format and call truncate */
@@ -162,7 +159,7 @@ patch_1m:
  *  %bx                Modified memory above 16M in 64kB blocks
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
 patch_16m:
        pushal
        /* Convert to (start,len) format and call truncate */
@@ -193,7 +190,7 @@ patch_16m:
  *  %bx                Modified memory above 16MB, in 64kB blocks
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
 patch_1m_16m:
        call    patch_1m
        call    patch_16m
@@ -219,7 +216,7 @@ patch_1m_16m:
  *
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
 get_underlying_e820:
 
        /* If the requested region is in the cache, return it */
@@ -308,22 +305,22 @@ get_underlying_e820:
        jmp     get_underlying_e820
        .size   get_underlying_e820, . - get_underlying_e820
 
-       .section ".data16"
+       .section ".data16", "aw", @progbits
 underlying_e820_index:
        .word   0xffff /* Initialise to an invalid value */
        .size underlying_e820_index, . - underlying_e820_index
 
-       .section ".bss16"
+       .section ".bss16", "aw", @nobits
 underlying_e820_ebx:
        .long   0
        .size underlying_e820_ebx, . - underlying_e820_ebx
 
-       .section ".bss16"
+       .section ".bss16", "aw", @nobits
 underlying_e820_cache:
        .space  E820MAXSIZE
        .size underlying_e820_cache, . - underlying_e820_cache
 
-       .section ".bss16"
+       .section ".bss16", "aw", @nobits
 underlying_e820_cache_size:
        .long   0
        .size   underlying_e820_cache_size, . - underlying_e820_cache_size
@@ -342,7 +339,7 @@ underlying_e820_cache_size:
  *
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
 get_windowed_e820:
 
        /* Preserve registers */
@@ -417,7 +414,7 @@ get_windowed_e820:
  *
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
 get_nonempty_e820:
 
        /* Record entry parameters */
@@ -462,7 +459,7 @@ get_nonempty_e820:
  *
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
 get_mangled_e820:
 
        /* Get a nonempty region */
@@ -496,7 +493,7 @@ get_mangled_e820:
  * INT 15,e820 handler
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
 int15_e820:
        pushw   %ds
        pushw   %cs:rm_ds
@@ -510,7 +507,7 @@ int15_e820:
  * INT 15,e801 handler
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
 int15_e801:
        /* Call previous handler */
        pushfw
@@ -536,7 +533,7 @@ int15_e801:
  * INT 15,88 handler
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
 int15_88:
        /* Call previous handler */
        pushfw
@@ -557,7 +554,7 @@ int15_88:
  * INT 15 handler
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
        .globl int15
 int15:
        /* See if we want to intercept this call */
@@ -580,7 +577,7 @@ int15:
        ljmp    *%cs:int15_vector
        .size int15, . - int15
        
-       .section ".text16.data"
+       .section ".text16.data", "aw", @progbits
        .globl int15_vector
 int15_vector:
        .long 0
index 8dd1a2e..68b7374 100644 (file)
  */
 
        .arch i386
-       .section ".text16", "awx", @progbits
-       .section ".text16.data", "aw", @progbits
-       .section ".data16", "aw", @progbits
 
 /****************************************************************************
  * !PXE structure
  ****************************************************************************
  */
-       .section ".text16.data"
+       .section ".text16.data", "aw", @progbits
        .globl ppxe
        .align 16
 ppxe:
@@ -56,7 +53,7 @@ pxe_segments:
        .size   ppxe, . - ppxe
 
        /* Define undiheader=0 as a weak symbol for non-ROM builds */
-       .section ".weak"
+       .section ".weak", "a", @nobits
        .weak   undiheader
 undiheader:
 
@@ -64,7 +61,7 @@ undiheader:
  * PXENV+ structure
  ****************************************************************************
  */
-       .section ".text16.data"
+       .section ".text16.data", "aw", @progbits
        .globl pxenv
        .align 16
 pxenv:
@@ -108,12 +105,12 @@ pxenv:
         * somebody at Wyse has difficulty distinguishing between the
         * words "may" and "must"...
         */
-       .section ".text16.null"
+       .section ".text16.null", "ax", @progbits
        .code16
 pxenv_null_entry:
        jmp     pxenv_entry
 
-       .section ".text16"
+       .section ".text16", "ax", @progbits
        .code16
 pxenv_entry:
        pushl   $pxe_api_call
@@ -137,7 +134,7 @@ pxenv_entry:
  *   none
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
        .code16
 pxe_entry:
 pxe_entry_sp:
@@ -186,7 +183,7 @@ pxe_entry_common:
  *   none
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
        .code16
        .globl  pxe_int_1a
 pxe_int_1a:
@@ -205,6 +202,6 @@ pxe_int_1a:
        popfw
        ljmp    *%cs:pxe_int_1a_vector
 
-       .section ".text16.data"
+       .section ".text16.data", "aw", @progbits
        .globl  pxe_int_1a_vector
 pxe_int_1a_vector:     .long 0
index 56ca64d..34eacb9 100644 (file)
@@ -18,8 +18,6 @@
  */
 
        .arch i386
-       .section ".prefix.lib", "awx", @progbits
-       .section ".data16", "aw", @progbits
 
 /**
  * High memory temporary load address
@@ -53,7 +51,7 @@
  *   %ds:di : next character in output buffer (if applicable)
  *****************************************************************************
  */
-       .section ".prefix.lib"
+       .section ".prefix.lib", "awx", @progbits
        .code16
        .globl  print_character
 print_character:
@@ -93,7 +91,7 @@ print_character:
  *   %ds:di : next character in output buffer (if applicable)
  *****************************************************************************
  */
-       .section ".prefix.lib"
+       .section ".prefix.lib", "awx", @progbits
        .code16
        .globl  print_message
 print_message:
@@ -123,7 +121,7 @@ print_message:
  *   %ds:di : next character in output buffer (if applicable)
  *****************************************************************************
  */
-       .section ".prefix.lib"
+       .section ".prefix.lib", "awx", @progbits
        .code16
        .globl  print_hex_dword
 print_hex_dword:
@@ -171,7 +169,7 @@ print_hex_nibble:
  *   %ds:di : next character in output buffer (if applicable)
  *****************************************************************************
  */
-       .section ".prefix.lib"
+       .section ".prefix.lib", "awx", @progbits
        .code16
        .globl  print_pci_busdevfn
 print_pci_busdevfn:
@@ -208,7 +206,7 @@ print_pci_busdevfn:
  *   %ds:di : next character in output buffer (if applicable)
  *****************************************************************************
  */
-       .section ".prefix.lib"
+       .section ".prefix.lib", "awx", @progbits
        .code16
        .globl  print_kill_line
 print_kill_line:
@@ -256,7 +254,7 @@ print_kill_line:
 #ifndef KEEP_IT_REAL
 
        /* GDT for protected-mode calls */
-       .section ".prefix.lib"
+       .section ".prefix.lib", "awx", @progbits
        .align 16
 pm_call_vars:
 gdt:
@@ -279,7 +277,7 @@ gdt_end:
        .equ    gdt_length, . - gdt
        .size   gdt, . - gdt
 
-       .section ".prefix.lib"
+       .section ".prefix.lib", "awx", @progbits
        .align 16
 pm_saved_gdt:  
        .long   0, 0
@@ -288,7 +286,7 @@ pm_saved_gdt:
        .equ    pm_call_vars_size, . - pm_call_vars
 #define PM_CALL_VAR(x) ( -pm_call_vars_size + ( (x) - pm_call_vars ) )
 
-       .section ".prefix.lib"
+       .section ".prefix.lib", "awx", @progbits
        .code16
 pm_call:
        /* Preserve registers, flags, and RM return point */
@@ -411,7 +409,7 @@ set_seg_base:
  *   None
  ****************************************************************************
  */
-       .section ".prefix.lib"
+       .section ".prefix.lib", "awx", @progbits
        .code16
 copy_bytes:
        pushl %ecx
@@ -436,7 +434,7 @@ copy_bytes:
  *   none
  ****************************************************************************
  */
-       .section ".prefix.lib"
+       .section ".prefix.lib", "awx", @progbits
        .code16
 install_block:
        
@@ -533,7 +531,7 @@ install_block:
  *   none
  ****************************************************************************
  */
-       .section ".prefix.lib"
+       .section ".prefix.lib", "awx", @progbits
        .code16
        .globl  alloc_basemem
 alloc_basemem:
@@ -581,7 +579,7 @@ alloc_basemem:
  *   none
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
        .code16
        .globl  free_basemem
 free_basemem:
@@ -613,7 +611,7 @@ free_basemem:
        ret
        .size free_basemem, . - free_basemem
 
-       .section ".text16.data"
+       .section ".text16.data", "aw", @progbits
        .globl  hooked_bios_interrupts
 hooked_bios_interrupts:
        .word   0
@@ -633,7 +631,7 @@ hooked_bios_interrupts:
  *   none
  ****************************************************************************
  */
-       .section ".prefix.lib"
+       .section ".prefix.lib", "awx", @progbits
        .code16
        .globl install
 install:
@@ -668,7 +666,7 @@ install:
  *   none
  ****************************************************************************
  */
-       .section ".prefix.lib"
+       .section ".prefix.lib", "awx", @progbits
        .code16
        .globl install_prealloc
 install_prealloc:
@@ -750,7 +748,7 @@ install_prealloc:
        .size install_prealloc, . - install_prealloc
 
        /* Vectors for far calls to .text16 functions */
-       .section ".data16"
+       .section ".data16", "aw", @progbits
 #ifdef KEEP_IT_REAL
 init_libkir_vector:
        .word init_libkir
@@ -781,7 +779,7 @@ prot_call_vector:
  *   none
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
        .code16
        .globl uninstall
 uninstall:
index d1753e3..4fb4acb 100644 (file)
@@ -1,9 +1,7 @@
        .text
        .arch i386
-       .section ".prefix", "ax", @progbits
-       .section ".prefix.data", "aw", @progbits
        .code16
-       .section ".prefix"
+       .section ".prefix", "ax", @progbits
        .org 0
 
 nbi_header:
index d1eb962..3578fff 100644 (file)
@@ -6,8 +6,6 @@
        .text
        .arch i386
        .org 0
-       .section ".prefix", "ax", @progbits
-       .section ".prefix.data", "aw", @progbits
        .code16
 
 #include <undi.h>
@@ -16,7 +14,7 @@
  * Entry point:        set operating context, print welcome message
  *****************************************************************************
  */
-       .section ".prefix"
+       .section ".prefix", "ax", @progbits
        /* Set up our non-stack segment registers */
        jmp     $0x7c0, $1f
 1:     movw    %cs, %ax
@@ -39,7 +37,7 @@
        movw    $10f, %si
        xorw    %di, %di
        call    print_message
-       .section ".prefix.data"
+       .section ".prefix.data", "aw", @progbits
 10:    .asciz  "PXE->EB:"
        .previous
 
@@ -70,7 +68,7 @@ detect_pxenv:
        movb    $',', %al
        call    print_character
        jmp     99f
-       .section ".prefix.data"
+       .section ".prefix.data", "aw", @progbits
 10:    .asciz  " PXENV+ at "
        .previous
 
@@ -108,7 +106,7 @@ detect_ppxe:
        movb    $',', %al
        call    print_character
        jmp     99f
-       .section ".prefix.data"
+       .section ".prefix.data", "aw", @progbits
 10:    .asciz  " !PXE at "
        .previous
 
@@ -131,7 +129,7 @@ check_have_stack:
        movw    $10f, %si
        call    print_message
        jmp     finished
-       .section ".prefix.data"
+       .section ".prefix.data", "aw", @progbits
 10:    .asciz  " No PXE stack found!\n"
        .previous
 99:    
@@ -169,7 +167,7 @@ print_structure_information:
        call    print_message
        les     entry_segoff, %bx
        call    print_segoff
-       .section ".prefix.data"
+       .section ".prefix.data", "aw", @progbits
 10:    .asciz  " entry point at "
        .previous
        /* Print UNDI code segment */
@@ -177,7 +175,7 @@ print_structure_information:
        call    print_message
        les     undi_code_segoff, %bx
        call    print_segoff
-       .section ".prefix.data"
+       .section ".prefix.data", "aw", @progbits
 10:    .asciz  "\n         UNDI code segment "
        .previous
        /* Print UNDI data segment */
@@ -185,7 +183,7 @@ print_structure_information:
        call    print_message
        les     undi_data_segoff, %bx
        call    print_segoff
-       .section ".prefix.data"
+       .section ".prefix.data", "aw", @progbits
 10:    .asciz  ", data segment "
        .previous
        /* Print UNDI memory usage */
@@ -199,7 +197,7 @@ print_structure_information:
        call    print_word
        movw    $20f, %si
        call    print_message
-       .section ".prefix.data"
+       .section ".prefix.data", "aw", @progbits
 10:    .asciz  " ("
 20:    .asciz  "kB)\n"
        .previous
@@ -233,7 +231,7 @@ pci_physical_device:
        movb    $0x0a, %al
        call    print_character
        jmp     99f
-       .section ".prefix.data"
+       .section ".prefix.data", "aw", @progbits
 10:    .asciz  "         UNDI device is PCI "
        .previous
 
@@ -241,7 +239,7 @@ no_physical_device:
        /* No device found, or device type not understood */
        movw    $10f, %si
        call    print_message
-       .section ".prefix.data"
+       .section ".prefix.data", "aw", @progbits
 10:    .asciz  "         Unable to determine UNDI physical device\n"
        .previous
 
@@ -308,7 +306,7 @@ print_free_basemem:
        call    print_word
        movw    $20f, %si
        call    print_message
-       .section ".prefix.data"
+       .section ".prefix.data", "aw", @progbits
 10:    .asciz  "         "
 20:    .asciz  "kB free base memory after PXE unload\n"
        .previous
@@ -503,7 +501,7 @@ print_pxe_error:
        call    print_message
        popw    %si
        ret
-       .section ".prefix.data"
+       .section ".prefix.data", "aw", @progbits
 10:    .asciz  "         UNDI API call "
 20:    .asciz  " failed: status code "
 30:    .asciz  "\n"
index 7e9fd45..8cf1f7f 100755 (executable)
@@ -19,9 +19,6 @@
 #define SIZEOF_I386_ALL_REGS   ( SIZEOF_REAL_MODE_REGS + SIZEOF_I386_FLAGS )
        
        .arch i386
-       .section ".text16", "ax", @progbits
-       .section ".text16.data", "aw", @progbits
-       .section ".data16", "aw", @progbits
 
 /****************************************************************************
  * Global descriptor table
@@ -47,7 +44,7 @@
 #else
 #define RM_LIMIT_16_19__AVL__SIZE__GRANULARITY 0x00
 #endif
-       .section ".data16"
+       .section ".data16", "aw", @progbits
        .align 16
 gdt:
 gdtr:          /* The first GDT entry is unused, the GDTR can fit here. */
@@ -99,7 +96,7 @@ gdt_end:
  *   %edi : Physical base of protected-mode code (virt_offset)
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
        .code16
        .globl init_librm
 init_librm:
@@ -149,7 +146,7 @@ init_librm:
        popl    %eax
        lret
 
-       .section ".text16"
+       .section ".text16", "ax", @progbits
        .code16
        .weak idt_init
 set_seg_base:
@@ -177,7 +174,7 @@ idt_init: /* Reuse the return opcode here */
  *
  ****************************************************************************
  */
-       .section ".text16"
+       .section ".text16", "ax", @progbits
        .code16
 real_to_prot:
        /* Make sure we have our data segment available */
@@ -209,7 +206,7 @@ real_to_prot:
        orb     $CR0_PE, %al
        movl    %eax, %cr0
        data32 ljmp     $VIRTUAL_CS, $1f
-       .section ".text"
+       .section ".text", "ax", @progbits
        .code32
 1:
        /* Set up protected-mode data segments and stack pointer */
@@ -240,7 +237,7 @@ real_to_prot:
        ret
 
        /* Default IDTR with no interrupts */
-       .section ".data16"
+       .section ".data16", "aw", @progbits
        .weak idtr
 idtr:
 rm_idtr:
@@ -266,7 +263,7 @@ rm_idtr:
  *
  ****************************************************************************
  */
-       .section ".text"
+       .section ".text", "ax", @progbits
        .code32
 prot_to_real:
        /* Add return address to data to be moved to RM stack */
@@ -296,7 +293,7 @@ prot_to_real:
        movw    %ax, %gs
        movw    %ax, %ss
        ljmp    $REAL_CS, $1f
-       .section ".text16"
+       .section ".text16", "ax", @progbits
        .code16
 1:
        /* Switch to real mode */
@@ -328,13 +325,13 @@ p2r_jump_target:
         * rather than .data16 because code needs to be able to locate
         * the data segment.
         */
-       .section ".data16"
+       .section ".data16", "aw", @progbits
 p2r_jump_vector:
        .word   p2r_jump_target
        .globl rm_cs
 rm_cs: .word 0
        .globl rm_ds
-       .section ".text16.data"
+       .section ".text16.data", "aw", @progbits
 rm_ds: .word 0
 
 /****************************************************************************
@@ -378,7 +375,7 @@ rm_ds:      .word 0
 #define PC_OFFSET_FUNCTION ( PC_OFFSET_RETADDR + 4 )
 #define PC_OFFSET_END ( PC_OFFSET_FUNCTION + 4 )
 
-       .section ".text16"
+       .section ".text16", "ax", @progbits
        .code16
        .globl prot_call
 prot_call:
@@ -403,7 +400,7 @@ prot_call:
        movl    $PC_OFFSET_END, %ecx
        pushl   $1f
        jmp     real_to_prot
-       .section ".text"
+       .section ".text", "ax", @progbits
        .code32
 1:
        /* Set up environment expected by C code */
@@ -419,7 +416,7 @@ prot_call:
        movl    $PC_OFFSET_END, %ecx
        pushl   $1f
        jmp     prot_to_real
-       .section ".text16"
+       .section ".text16", "ax", @progbits
        .code16
 1:     
        /* Reload GDT and IDT, restore registers and flags and return */
@@ -475,7 +472,7 @@ prot_call:
 #define RC_OFFSET_FUNCTION ( RC_OFFSET_RETADDR + 4 )
 #define RC_OFFSET_END ( RC_OFFSET_FUNCTION + 4 )
 
-       .section ".text"
+       .section ".text", "ax", @progbits
        .code32
        .globl real_call
 real_call:
@@ -487,7 +484,7 @@ real_call:
        movl    $( RC_OFFSET_RETADDR + 4 /* function pointer copy */ ), %ecx
        pushl   $1f
        jmp     prot_to_real
-       .section ".text16"
+       .section ".text16", "ax", @progbits
        .code16
 1:
        /* Call real-mode function */
@@ -503,7 +500,7 @@ real_call:
        movl    $RC_OFFSET_RETADDR, %ecx
        pushl   $1f
        jmp     real_to_prot
-       .section ".text"
+       .section ".text", "ax", @progbits
        .code32
 1:
        /* Restore registers and return */
@@ -514,7 +511,7 @@ real_call:
        /* Function vector, used because "call xx(%sp)" is not a valid
         * 16-bit expression.
         */
-       .section ".data16"
+       .section ".data16", "aw", @progbits
 rc_function:   .word 0, 0
 
 /****************************************************************************
@@ -551,7 +548,7 @@ rc_function:        .word 0, 0
  * to us.
  ****************************************************************************
  */
-       .section ".data"
+       .section ".data", "aw", @progbits
        .globl rm_sp
 rm_sp: .word 0
        .globl rm_ss
@@ -567,13 +564,13 @@ pm_esp:   .long _estack
  ****************************************************************************
  */
        /* Internal copies, created by init_librm (which runs in real mode) */
-       .section ".data16"
+       .section ".data16", "aw", @progbits
 _virt_offset:  .long 0
 _text16:       .long 0
 _data16:       .long 0
 
        /* Externally-visible copies, created by real_to_prot */
-       .section ".data"
+       .section ".data", "aw", @progbits
        .globl virt_offset
 virt_offset:   .long 0 
        .globl text16
index 4541bfd..ef7d693 100644 (file)
@@ -1,4 +1,4 @@
-       .section ".data", "aw"
+       .section ".data", "aw", @progbits
        .balign 4
        .globl _embedded_image_start
 _embedded_image_start:
index bd29383..739b052 100644 (file)
@@ -1,10 +1,10 @@
        .arch i386
 
-       .section ".data"
+       .section ".data", "aw", @progbits
 watch_me:
        .long 0xfeedbeef
 
-       .section ".text"
+       .section ".text", "ax", @progbits
        .code32
 gdbstub_test:
        /* 1. Read registers test */