summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMichael Brown2009-02-15 11:54:52 +0100
committerMichael Brown2009-02-15 11:59:53 +0100
commitc9e5b12473b6d1cfffb78c500b3cd91416d47f84 (patch)
tree9908faa9367e7189974cd4cf1d5db57815830fbf /src
parent[i386] Add explicit ""aw", @nobits" declarations to stack sections (diff)
downloadipxe-c9e5b12473b6d1cfffb78c500b3cd91416d47f84.tar.gz
ipxe-c9e5b12473b6d1cfffb78c500b3cd91416d47f84.tar.xz
ipxe-c9e5b12473b6d1cfffb78c500b3cd91416d47f84.zip
[i386] Add explicit flags and type on all .section declarations
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'`
Diffstat (limited to 'src')
-rw-r--r--src/arch/i386/core/gdbidt.S6
-rw-r--r--src/arch/i386/drivers/net/undiisr.S6
-rw-r--r--src/arch/i386/firmware/pcbios/e820mangler.S39
-rw-r--r--src/arch/i386/interface/pxe/pxe_entry.S19
-rw-r--r--src/arch/i386/prefix/libprefix.S36
-rw-r--r--src/arch/i386/prefix/nbiprefix.S4
-rw-r--r--src/arch/i386/prefix/pxeprefix.S28
-rwxr-xr-xsrc/arch/i386/transitions/librm.S43
-rw-r--r--src/image/embed.S2
-rw-r--r--src/tests/gdbstub_test.S4
10 files changed, 85 insertions, 102 deletions
diff --git a/src/arch/i386/core/gdbidt.S b/src/arch/i386/core/gdbidt.S
index 64c29e4b..cd8b38a9 100644
--- a/src/arch/i386/core/gdbidt.S
+++ b/src/arch/i386/core/gdbidt.S
@@ -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 */
diff --git a/src/arch/i386/drivers/net/undiisr.S b/src/arch/i386/drivers/net/undiisr.S
index a6c6c381..2b31b414 100644
--- a/src/arch/i386/drivers/net/undiisr.S
+++ b/src/arch/i386/drivers/net/undiisr.S
@@ -10,11 +10,9 @@
.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
diff --git a/src/arch/i386/firmware/pcbios/e820mangler.S b/src/arch/i386/firmware/pcbios/e820mangler.S
index 53e2d7c5..4ba3fb14 100644
--- a/src/arch/i386/firmware/pcbios/e820mangler.S
+++ b/src/arch/i386/firmware/pcbios/e820mangler.S
@@ -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
diff --git a/src/arch/i386/interface/pxe/pxe_entry.S b/src/arch/i386/interface/pxe/pxe_entry.S
index 8dd1a2ea..68b7374f 100644
--- a/src/arch/i386/interface/pxe/pxe_entry.S
+++ b/src/arch/i386/interface/pxe/pxe_entry.S
@@ -18,15 +18,12 @@
*/
.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
diff --git a/src/arch/i386/prefix/libprefix.S b/src/arch/i386/prefix/libprefix.S
index 56ca64d9..34eacb90 100644
--- a/src/arch/i386/prefix/libprefix.S
+++ b/src/arch/i386/prefix/libprefix.S
@@ -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:
diff --git a/src/arch/i386/prefix/nbiprefix.S b/src/arch/i386/prefix/nbiprefix.S
index d1753e30..4fb4acb1 100644
--- a/src/arch/i386/prefix/nbiprefix.S
+++ b/src/arch/i386/prefix/nbiprefix.S
@@ -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:
diff --git a/src/arch/i386/prefix/pxeprefix.S b/src/arch/i386/prefix/pxeprefix.S
index d1eb962f..3578fff7 100644
--- a/src/arch/i386/prefix/pxeprefix.S
+++ b/src/arch/i386/prefix/pxeprefix.S
@@ -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"
diff --git a/src/arch/i386/transitions/librm.S b/src/arch/i386/transitions/librm.S
index 7e9fd45d..8cf1f7f5 100755
--- a/src/arch/i386/transitions/librm.S
+++ b/src/arch/i386/transitions/librm.S
@@ -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
diff --git a/src/image/embed.S b/src/image/embed.S
index 4541bfdc..ef7d693b 100644
--- a/src/image/embed.S
+++ b/src/image/embed.S
@@ -1,4 +1,4 @@
- .section ".data", "aw"
+ .section ".data", "aw", @progbits
.balign 4
.globl _embedded_image_start
_embedded_image_start:
diff --git a/src/tests/gdbstub_test.S b/src/tests/gdbstub_test.S
index bd293836..739b0527 100644
--- a/src/tests/gdbstub_test.S
+++ b/src/tests/gdbstub_test.S
@@ -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 */