summaryrefslogtreecommitdiff
path: root/output
diff options
context:
space:
mode:
Diffstat (limited to 'output')
-rw-r--r--output/outelf32.c23
-rw-r--r--output/outelf64.c23
2 files changed, 24 insertions, 22 deletions
diff --git a/output/outelf32.c b/output/outelf32.c
index de318056..1625fb7d 100644
--- a/output/outelf32.c
+++ b/output/outelf32.c
@@ -523,19 +523,20 @@ static void elf_deflabel(char *name, int32_t segment, int64_t offset,
else {
int i;
sym->section = SHN_UNDEF;
- if (nsects == 0 && segment == def_seg) {
+ if (segment == def_seg) {
+ /* we have to be sure at least text section is there */
int tempint;
- if (segment != elf_section_names(".text", 2, &tempint))
- nasm_error(ERR_PANIC,
- "strange segment conditions in ELF driver");
- sym->section = nsects;
- } else {
- for (i = 0; i < nsects; i++)
- if (segment == sects[i]->index) {
- sym->section = i + 1;
- break;
- }
+ elf_section_names(".text", 2, &tempint);
}
+ sym->section = nsects;
+ for (i = 0; i < nsects; i++) {
+ if (segment == sects[i]->index) {
+ sym->section = i + 1;
+ break;
+ }
+ }
+ if (nsects && i == nsects)
+ nasm_error(ERR_PANIC, "strange segment conditions in ELF driver");
}
if (is_global == 2) {
diff --git a/output/outelf64.c b/output/outelf64.c
index ba049b1c..18508fb3 100644
--- a/output/outelf64.c
+++ b/output/outelf64.c
@@ -527,19 +527,20 @@ static void elf_deflabel(char *name, int32_t segment, int64_t offset,
else {
int i;
sym->section = SHN_UNDEF;
- if (nsects == 0 && segment == def_seg) {
+ if (segment == def_seg) {
+ /* we have to be sure at least text section is there */
int tempint;
- if (segment != elf_section_names(".text", 2, &tempint))
- nasm_error(ERR_PANIC,
- "strange segment conditions in ELF driver");
- sym->section = nsects;
- } else {
- for (i = 0; i < nsects; i++)
- if (segment == sects[i]->index) {
- sym->section = i + 1;
- break;
- }
+ elf_section_names(".text", 2, &tempint);
}
+ sym->section = nsects;
+ for (i = 0; i < nsects; i++) {
+ if (segment == sects[i]->index) {
+ sym->section = i + 1;
+ break;
+ }
+ }
+ if (nsects && i == nsects)
+ nasm_error(ERR_PANIC, "strange segment conditions in ELF driver");
}
if (is_global == 2) {