From fc393b6fdb5cf2d7ca7d52c625bdae15d2d2a399 Mon Sep 17 00:00:00 2001 From: jonas Date: Wed, 23 Jul 2014 14:06:09 +0000 Subject: * add alignment for .lcomm data in AIX, required for int64 data put in bss in case it's passed to interlocked* (requires 8 byte alignment, default is 4). Supported in AIX 5.3 and later (http://www-01.ibm.com/support/docview.wss?uid=isg1IY90802) and GNU binutils 2.24 or later git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28252 3ad0048d-3df7-0310-abae-a5850022a9f2 --- compiler/aggas.pas | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'compiler/aggas.pas') diff --git a/compiler/aggas.pas b/compiler/aggas.pas index 2a882abf6f..415122cd74 100644 --- a/compiler/aggas.pas +++ b/compiler/aggas.pas @@ -843,7 +843,8 @@ implementation asmwrite(ReplaceForbiddenAsmSymbolChars(tai_datablock(hp).sym.name)); asmwrite(','); asmwrite(tostr(tai_datablock(hp).size)+','); - asmwrite('_data.bss_'); + asmwrite('_data.bss_,'); + asmwriteln(tostr(last_align)); end; end else -- cgit v1.2.1 From 6e722c2aff364d6e4bf206773b62a9e54291dc34 Mon Sep 17 00:00:00 2001 From: florian Date: Sun, 31 Aug 2014 15:01:55 +0000 Subject: * create a thumb_func directive before .globl directives in assembler to prevent accidental changes of asm mode git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@28556 3ad0048d-3df7-0310-abae-a5850022a9f2 --- compiler/aggas.pas | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'compiler/aggas.pas') diff --git a/compiler/aggas.pas b/compiler/aggas.pas index 415122cd74..9586deff42 100644 --- a/compiler/aggas.pas +++ b/compiler/aggas.pas @@ -1244,6 +1244,11 @@ implementation end; if tai_label(hp).labsym.bind in [AB_GLOBAL,AB_PRIVATE_EXTERN] then begin +{$ifdef arm} + { do no change arm mode accidently, .globl seems to reset the mode } + if GenerateThumbCode or GenerateThumb2Code then + AsmWriteln(#9'.thumb_func'#9); +{$endif arm} AsmWrite('.globl'#9); if replaceforbidden then AsmWriteLn(ReplaceForbiddenAsmSymbolChars(tai_label(hp).labsym.name)) -- cgit v1.2.1 From fadef90a73c47485d07aa106df8ddf7a9e27d70d Mon Sep 17 00:00:00 2001 From: marco Date: Sun, 7 Dec 2014 20:27:02 +0000 Subject: * first dragonfly patch (existing most). Mantis #27091 git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@29213 3ad0048d-3df7-0310-abae-a5850022a9f2 --- compiler/aggas.pas | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'compiler/aggas.pas') diff --git a/compiler/aggas.pas b/compiler/aggas.pas index 9586deff42..4b8812c784 100644 --- a/compiler/aggas.pas +++ b/compiler/aggas.pas @@ -1718,7 +1718,7 @@ implementation { "no executable stack" marker } { TODO: used by OpenBSD/NetBSD as well? } - if (target_info.system in (systems_linux + systems_android + systems_freebsd)) and + if (target_info.system in (systems_linux + systems_android + systems_freebsd + systems_dragonfly)) and not(cs_executable_stack in current_settings.moduleswitches) then begin AsmWriteLn('.section .note.GNU-stack,"",%progbits'); -- cgit v1.2.1 From d8b59d23e576c7e069f9c3fb57c1f9fdcd4d5b81 Mon Sep 17 00:00:00 2001 From: pierre Date: Mon, 15 Dec 2014 09:10:50 +0000 Subject: Fix error with .ref pseudo-op. with assembler labels that still had dollar signs on AIX assembler git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@29300 3ad0048d-3df7-0310-abae-a5850022a9f2 --- compiler/aggas.pas | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'compiler/aggas.pas') diff --git a/compiler/aggas.pas b/compiler/aggas.pas index 4b8812c784..52acf3b03f 100644 --- a/compiler/aggas.pas +++ b/compiler/aggas.pas @@ -1452,7 +1452,12 @@ implementation begin WriteDirectiveName(tai_directive(hp).directive); if tai_directive(hp).name <>'' then - AsmWrite(tai_directive(hp).name); + begin + if replaceforbidden then + AsmWrite(ReplaceForbiddenAsmSymbolChars(tai_directive(hp).name)) + else + AsmWrite(tai_directive(hp).name); + end; AsmLn; end; -- cgit v1.2.1