[build] Allow assembler section type character to vary by architecture

On some architectures (such as ARM) the "@" character is used as a
comment delimiter.  A section type argument such as "@progbits"
therefore becomes "%progbits".

This is further complicated by the fact that the "%" character has
special meaning for inline assembly when input or output operands are
used, in which cases "@progbits" becomes "%%progbits".

Allow the section type character(s) to be defined via Makefile
variables.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2016-03-13 11:09:01 +00:00
parent a8037ee131
commit 1f65ed53da
7 changed files with 29 additions and 8 deletions

View File

@@ -491,6 +491,11 @@ LDFLAGS += -static
#
CFLAGS += -include include/compiler.h
# The section type character (e.g. "@" in "@progbits") varies by
# architecture.
#
CFLAGS += -DASM_TCHAR='$(ASM_TCHAR)' -DASM_TCHAR_OPS='$(ASM_TCHAR_OPS)'
# CFLAGS for specific object types
#
CFLAGS_c +=
@@ -896,7 +901,7 @@ endif
# Device ID tables (using IDs from ROM definition file)
#
define obj_pci_id_asm
.section ".pci_devlist.$(1)", "a", @progbits
.section ".pci_devlist.$(1)", "a", $(ASM_TCHAR)progbits
.globl pci_devlist_$(1)
pci_devlist_$(1):
.short ( 0x$(1) & 0xffff )