mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-05 08:09:52 +01:00
* removed optimisation to reduce the number of unnecessary section headers
in the high level typed constant builder, as it does not work if the
passed list to start_internal_data_builder() is used for multiple
nested builders (you can't know what the last section was) -> always
emit a section header for a nested typed const builder
git-svn-id: trunk@34391 -
This commit is contained in:
parent
a7c893064a
commit
4ca50bc9eb
@ -1136,13 +1136,16 @@ implementation
|
||||
options: ttcasmlistoptions;
|
||||
foundsec: longint;
|
||||
begin
|
||||
options:=[tcalo_is_lab];
|
||||
{ Add a section header if the previous one was different. We'll use the
|
||||
same section name in case multiple items are added to the same kind of
|
||||
section (rodata, rodata_no_rel, ...), so that everything will still
|
||||
end up in the same section even if there are multiple section headers }
|
||||
if finternal_data_current_section<>sectype then
|
||||
include(options,tcalo_new_section);
|
||||
{ you can't start multiple concurrent internal data builders for the
|
||||
same tcb, finish the first before starting another }
|
||||
if finternal_data_current_section<>sec_none then
|
||||
internalerror(2016082801);
|
||||
{ we don't know what was previously added to this list, so always add
|
||||
a section header. We'll use the same section name in case multiple
|
||||
items are added to the same kind of section (rodata, rodata_no_rel,
|
||||
...), so that everything will still end up in the same section even if
|
||||
there are multiple section headers }
|
||||
options:=[tcalo_is_lab,tcalo_new_section];
|
||||
finternal_data_current_section:=sectype;
|
||||
l:=nil;
|
||||
{ did we already create a section of this type for the internal data of
|
||||
@ -1217,6 +1220,7 @@ implementation
|
||||
alignment));
|
||||
tcb.free;
|
||||
tcb:=nil;
|
||||
finternal_data_current_section:=sec_none;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user