mirror of
https://github.com/ksherlock/merlin-utils.git
synced 2024-06-01 02:41:34 +00:00
half of lib support (untested). library names need to match the symbol (singular) they define.
This commit is contained in:
parent
dac2be0940
commit
4688dbc5c3
31
link.cpp
31
link.cpp
|
@ -622,6 +622,37 @@ void finish(void) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void lib(const std::string &path) {
|
||||||
|
|
||||||
|
/* for all unresolved symbols, link path/symbol ( no .L extension) */
|
||||||
|
|
||||||
|
std::string p = path;
|
||||||
|
if (!p.empty() && p.back() != '/') p.push_back('/');
|
||||||
|
auto size = p.size();
|
||||||
|
|
||||||
|
/* symbol table might reallocate so can't use for( : ) loop */
|
||||||
|
/* any new dependencies will be appended at the end and processed */
|
||||||
|
for (unsigned i = 0; i < symbol_table.size(); ++i) {
|
||||||
|
|
||||||
|
auto &e = symbol_table[i];
|
||||||
|
|
||||||
|
if (e.absolute || e.defined) continue;
|
||||||
|
|
||||||
|
p.append(e.name);
|
||||||
|
|
||||||
|
/* check the file type... */
|
||||||
|
std::error_code ec;
|
||||||
|
afp::finder_info fi;
|
||||||
|
|
||||||
|
fi.read(path, ec);
|
||||||
|
|
||||||
|
if (ec || fi.prodos_file_type() != 0xf8) continue;
|
||||||
|
process_unit(p);
|
||||||
|
p.resize(size);
|
||||||
|
// assume e is invalid at this point.
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static bool op_needs_label(opcode_t op) {
|
static bool op_needs_label(opcode_t op) {
|
||||||
switch (op) {
|
switch (op) {
|
||||||
case OP_KBD:
|
case OP_KBD:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user