summaryrefslogtreecommitdiff
path: root/compiler/aasmbase.pas
diff options
context:
space:
mode:
authorflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2007-01-06 20:27:59 +0000
committerflorian <florian@3ad0048d-3df7-0310-abae-a5850022a9f2>2007-01-06 20:27:59 +0000
commitd300666cad8e6f9838746372c57c0233f88e2136 (patch)
tree6d3e8d5786d2097a9d24776568e9bbafffa6a293 /compiler/aasmbase.pas
parent7bebdeb5842f3bd28e152ae31e73977125864711 (diff)
downloadfpc-d300666cad8e6f9838746372c57c0233f88e2136.tar.gz
* fixed library creating on x86_64-linux
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@5828 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'compiler/aasmbase.pas')
-rw-r--r--compiler/aasmbase.pas14
1 files changed, 12 insertions, 2 deletions
diff --git a/compiler/aasmbase.pas b/compiler/aasmbase.pas
index 84455a4069..352f8ac844 100644
--- a/compiler/aasmbase.pas
+++ b/compiler/aasmbase.pas
@@ -39,7 +39,14 @@ interface
type
TAsmsymbind=(AB_NONE,AB_EXTERNAL,AB_COMMON,AB_LOCAL,AB_GLOBAL);
- TAsmsymtype=(AT_NONE,AT_FUNCTION,AT_DATA,AT_SECTION,AT_LABEL);
+ TAsmsymtype=(
+ AT_NONE,AT_FUNCTION,AT_DATA,AT_SECTION,AT_LABEL,
+ {
+ the address of this code label is taken somewhere in the code
+ so it must be taken care of it when creating pic
+ }
+ AT_ADDR
+ );
{ is the label only there for getting an DataOffset (e.g. for i/o
checks -> alt_addr) or is it a jump target (alt_jump), for debug
@@ -298,7 +305,10 @@ implementation
constructor TAsmLabel.Createlocal(AList:TFPHashObjectList;nr:longint;ltyp:TAsmLabelType);
begin
- inherited Create(AList,target_asm.labelprefix+asmlabeltypeprefix[ltyp]+tostr(nr),AB_LOCAL,AT_LABEL);
+ if ltyp=alt_addr then
+ inherited Create(AList,target_asm.labelprefix+asmlabeltypeprefix[ltyp]+tostr(nr),AB_LOCAL,AT_ADDR)
+ else
+ inherited Create(AList,target_asm.labelprefix+asmlabeltypeprefix[ltyp]+tostr(nr),AB_LOCAL,AT_LABEL);
labelnr:=nr;
labeltype:=ltyp;
is_set:=false;