Skip to content

Commit 98bba8e

Browse files
authored
Merge pull request #7621 from karkhaz/kk-warn-on-undefined-symbol
Do not error on undefined external linker symbols
2 parents d921808 + b40be48 commit 98bba8e

File tree

2 files changed

+11
-8
lines changed

2 files changed

+11
-8
lines changed

src/goto-cc/linker_script_merge.cpp

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -727,17 +727,20 @@ int linker_script_merget::get_linker_script_data(
727727
}
728728

729729
int linker_script_merget::goto_and_object_mismatch(
730-
const std::list<irep_idt> &linker_defined_symbols,
731-
const linker_valuest &linker_values)
730+
const std::list<irep_idt> &linker_defined_symbols,
731+
linker_valuest &linker_values)
732732
{
733733
int fail=0;
734734
for(const auto &sym : linker_defined_symbols)
735735
if(linker_values.find(sym)==linker_values.end())
736736
{
737-
fail=1;
738-
log.error() << "Variable '" << sym
739-
<< "' was declared extern but never given "
740-
<< "a value, even in a linker script" << messaget::eom;
737+
log.warning() << "Variable '" << sym
738+
<< "' was declared extern but never given a value, even in "
739+
<< "a linker script" << messaget::eom;
740+
741+
null_pointer_exprt null_pointer(pointer_type(char_type()));
742+
symbol_exprt null_sym(sym, pointer_type(char_type()));
743+
linker_values.emplace(sym, std::make_pair(null_sym, null_pointer));
741744
}
742745

743746
for(const auto &pair : linker_values)

src/goto-cc/linker_script_merge.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,8 @@ class linker_script_merget
197197
/// \return `1` if there is some mismatch between the list and map, `0` if
198198
/// everything is OK.
199199
int goto_and_object_mismatch(
200-
const std::list<irep_idt> &linker_defined_symbols,
201-
const linker_valuest &linker_values);
200+
const std::list<irep_idt> &linker_defined_symbols,
201+
linker_valuest &linker_values);
202202

203203
/// \brief Validate output of the `scripts/ls_parse.py` tool
204204
int linker_data_is_malformed(const jsont &data) const;

0 commit comments

Comments
 (0)