mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-04-06 14:21:43 +08:00
gas: drop .appfile and .appline
These were used originally to represent "# <line> <file>" constructs inserted by (typically) compilers when pre-processing. Quite some time ago they were replaced by .linefile though. Since the original directives were never documented, we ought to be able to remove support for them. As a result in a number of case function parameter aren't used anymore and can hence be dropped.
This commit is contained in:
parent
657edeab38
commit
c39e89c3aa
@ -316,7 +316,7 @@ c_symbol_merge (symbolS *debug, symbolS *normal)
|
||||
}
|
||||
|
||||
void
|
||||
c_dot_file_symbol (const char *filename, int appfile ATTRIBUTE_UNUSED)
|
||||
c_dot_file_symbol (const char *filename)
|
||||
{
|
||||
symbolS *symbolP;
|
||||
|
||||
@ -447,11 +447,11 @@ coff_add_linesym (symbolS *sym)
|
||||
}
|
||||
|
||||
static void
|
||||
obj_coff_ln (int appline)
|
||||
obj_coff_ln (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
int l;
|
||||
|
||||
if (! appline && def_symbol_in_progress != NULL)
|
||||
if (def_symbol_in_progress != NULL)
|
||||
{
|
||||
as_warn (_(".ln pseudo-op inside .def/.endef: ignored."));
|
||||
demand_empty_rest_of_line ();
|
||||
@ -460,9 +460,9 @@ obj_coff_ln (int appline)
|
||||
|
||||
l = get_absolute_expression ();
|
||||
|
||||
/* If there is no lineno symbol, treat a .ln
|
||||
directive as if it were a .appline directive. */
|
||||
if (appline || current_lineno_sym == NULL)
|
||||
/* If there is no lineno symbol, treat a .ln directive
|
||||
as if it were a (no longer existing) .appline one. */
|
||||
if (current_lineno_sym == NULL)
|
||||
new_logical_line ((char *) NULL, l - 1);
|
||||
else
|
||||
add_lineno (frag_now, frag_now_fix (), l);
|
||||
@ -473,8 +473,7 @@ obj_coff_ln (int appline)
|
||||
|
||||
if (listing)
|
||||
{
|
||||
if (! appline)
|
||||
l += coff_line_base - 1;
|
||||
l += coff_line_base - 1;
|
||||
listing_source_line (l);
|
||||
}
|
||||
}
|
||||
@ -1705,7 +1704,7 @@ coff_adjust_symtab (void)
|
||||
{
|
||||
if (symbol_rootP == NULL
|
||||
|| S_GET_STORAGE_CLASS (symbol_rootP) != C_FILE)
|
||||
c_dot_file_symbol ("fake", 0);
|
||||
c_dot_file_symbol ("fake");
|
||||
}
|
||||
|
||||
void
|
||||
@ -1849,7 +1848,6 @@ symbol_dump (void)
|
||||
const pseudo_typeS coff_pseudo_table[] =
|
||||
{
|
||||
{"ABORT", s_abort, 0},
|
||||
{"appline", obj_coff_ln, 1},
|
||||
/* We accept the .bss directive for backward compatibility with
|
||||
earlier versions of gas. */
|
||||
{"bss", obj_coff_bss, 0},
|
||||
|
@ -249,7 +249,7 @@ extern int coff_n_line_nos;
|
||||
extern symbolS *coff_last_function;
|
||||
|
||||
#define obj_emit_lineno(WHERE, LINE, FILE_START) abort ()
|
||||
#define obj_app_file(name, app) c_dot_file_symbol (name, app)
|
||||
#define obj_app_file(name) c_dot_file_symbol (name)
|
||||
#define obj_frob_symbol(S,P) coff_frob_symbol (S, & P)
|
||||
#define obj_frob_section(S) coff_frob_section (S)
|
||||
#define obj_frob_file_after_relocs() coff_frob_file_after_relocs ()
|
||||
@ -315,14 +315,12 @@ extern const pseudo_typeS coff_pseudo_table[];
|
||||
SA_SET_SCN_NRELOC (section_symbol (sec), n)
|
||||
#endif
|
||||
|
||||
#define obj_app_file(name, app) c_dot_file_symbol (name, app)
|
||||
|
||||
extern int S_SET_DATA_TYPE (symbolS *, int);
|
||||
extern int S_SET_STORAGE_CLASS (symbolS *, int);
|
||||
extern int S_GET_STORAGE_CLASS (symbolS *);
|
||||
extern void SA_SET_SYM_ENDNDX (symbolS *, symbolS *);
|
||||
extern void coff_add_linesym (symbolS *);
|
||||
extern void c_dot_file_symbol (const char *, int);
|
||||
extern void c_dot_file_symbol (const char *);
|
||||
extern void coff_frob_symbol (symbolS *, int *);
|
||||
extern void coff_adjust_symtab (void);
|
||||
extern void coff_frob_section (segT);
|
||||
@ -338,7 +336,6 @@ extern void pecoff_obj_clear_weak_hook (symbolS *);
|
||||
extern void obj_coff_section (int);
|
||||
extern segT obj_coff_add_segment (const char *);
|
||||
extern void obj_coff_section (int);
|
||||
extern void c_dot_file_symbol (const char *, int);
|
||||
extern segT s_get_segment (symbolS *);
|
||||
#ifndef tc_coff_symbol_emit_hook
|
||||
extern void tc_coff_symbol_emit_hook (symbolS *);
|
||||
|
@ -61,7 +61,7 @@ struct ecoff_sy_obj
|
||||
#define obj_symbol_clone_hook ecoff_symbol_clone_hook
|
||||
|
||||
/* Record file switches in the ECOFF symbol table. */
|
||||
#define obj_app_file(name, app) ecoff_new_file (name, app)
|
||||
#define obj_app_file(name) ecoff_new_file (name)
|
||||
|
||||
/* At the moment we don't want to do any stabs processing in read.c. */
|
||||
#define OBJ_PROCESS_STAB(seg, what, string, type, other, desc) \
|
||||
|
@ -258,46 +258,36 @@ elf_sec_sym_ok_for_reloc (asection *sec)
|
||||
}
|
||||
|
||||
void
|
||||
elf_file_symbol (const char *s, int appfile)
|
||||
elf_file_symbol (const char *s)
|
||||
{
|
||||
asymbol *bsym;
|
||||
symbolS *sym = symbol_new (s, absolute_section, &zero_address_frag, 0);
|
||||
size_t name_length = strlen (s);
|
||||
|
||||
if (!appfile
|
||||
|| symbol_rootP == NULL
|
||||
|| (bsym = symbol_get_bfdsym (symbol_rootP)) == NULL
|
||||
|| (bsym->flags & BSF_FILE) == 0)
|
||||
if (name_length > strlen (S_GET_NAME (sym)))
|
||||
{
|
||||
symbolS *sym;
|
||||
size_t name_length;
|
||||
obstack_grow (¬es, s, name_length + 1);
|
||||
S_SET_NAME (sym, (const char *) obstack_finish (¬es));
|
||||
}
|
||||
else
|
||||
strcpy ((char *) S_GET_NAME (sym), s);
|
||||
|
||||
sym = symbol_new (s, absolute_section, &zero_address_frag, 0);
|
||||
symbol_get_bfdsym (sym)->flags |= BSF_FILE;
|
||||
|
||||
name_length = strlen (s);
|
||||
if (name_length > strlen (S_GET_NAME (sym)))
|
||||
{
|
||||
obstack_grow (¬es, s, name_length + 1);
|
||||
S_SET_NAME (sym, (const char *) obstack_finish (¬es));
|
||||
}
|
||||
else
|
||||
strcpy ((char *) S_GET_NAME (sym), s);
|
||||
|
||||
symbol_get_bfdsym (sym)->flags |= BSF_FILE;
|
||||
|
||||
if (symbol_rootP != sym
|
||||
&& ((bsym = symbol_get_bfdsym (symbol_rootP)) == NULL
|
||||
|| (bsym->flags & BSF_FILE) == 0))
|
||||
{
|
||||
symbol_remove (sym, &symbol_rootP, &symbol_lastP);
|
||||
symbol_insert (sym, symbol_rootP, &symbol_rootP, &symbol_lastP);
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
verify_symbol_chain (symbol_rootP, symbol_lastP);
|
||||
#endif
|
||||
if (symbol_rootP != sym
|
||||
&& ((bsym = symbol_get_bfdsym (symbol_rootP)) == NULL
|
||||
|| (bsym->flags & BSF_FILE) == 0))
|
||||
{
|
||||
symbol_remove (sym, &symbol_rootP, &symbol_lastP);
|
||||
symbol_insert (sym, symbol_rootP, &symbol_rootP, &symbol_lastP);
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
verify_symbol_chain (symbol_rootP, symbol_lastP);
|
||||
#endif
|
||||
|
||||
#ifdef NEED_ECOFF_DEBUG
|
||||
ecoff_new_file (s, appfile);
|
||||
ecoff_new_file (s);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -180,7 +180,7 @@ extern void elf_frob_file_after_relocs (void);
|
||||
#ifndef obj_app_file
|
||||
#define obj_app_file elf_file_symbol
|
||||
#endif
|
||||
extern void elf_file_symbol (const char *, int);
|
||||
extern void elf_file_symbol (const char *);
|
||||
|
||||
extern void obj_elf_section_change_hook (void);
|
||||
|
||||
|
@ -36,9 +36,9 @@
|
||||
? (*this_format->begin) () \
|
||||
: (void) 0)
|
||||
|
||||
#define obj_app_file(NAME, APPFILE) \
|
||||
#define obj_app_file(NAME) \
|
||||
(this_format->app_file \
|
||||
? (*this_format->app_file) (NAME, APPFILE) \
|
||||
? (*this_format->app_file) (NAME) \
|
||||
: (void) 0)
|
||||
|
||||
#define obj_frob_symbol(S,P) \
|
||||
|
@ -19723,7 +19723,7 @@ s_mips_file (int x ATTRIBUTE_UNUSED)
|
||||
if (ECOFF_DEBUGGING)
|
||||
{
|
||||
get_number ();
|
||||
s_app_file (0);
|
||||
s_file (0);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -19738,7 +19738,7 @@ s_mips_file (int x ATTRIBUTE_UNUSED)
|
||||
if (filename != NULL && ! first_file_directive)
|
||||
{
|
||||
(void) new_logical_line (filename, -1);
|
||||
s_app_file_string (filename, 0);
|
||||
s_file_string (filename);
|
||||
}
|
||||
first_file_directive = 1;
|
||||
}
|
||||
|
@ -5194,7 +5194,7 @@ ppc_file (int ignore ATTRIBUTE_UNUSED)
|
||||
}
|
||||
|
||||
/* Use coff dot_file creation and adjust auxiliary entries. */
|
||||
c_dot_file_symbol (sfname, 0);
|
||||
c_dot_file_symbol (sfname);
|
||||
S_SET_NUMBER_AUXILIARY (symbol_rootP, auxnb);
|
||||
coffsym = coffsymbol (symbol_get_bfdsym (symbol_rootP));
|
||||
coffsym->native[1].u.auxent.x_file.x_ftype = XFT_FN;
|
||||
|
@ -4966,7 +4966,7 @@ tic54x_adjust_symtab (void)
|
||||
{
|
||||
unsigned lineno;
|
||||
const char * filename = as_where (&lineno);
|
||||
c_dot_file_symbol (filename, 0);
|
||||
c_dot_file_symbol (filename);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -116,7 +116,7 @@ const pseudo_typeS md_pseudo_table[] = {
|
||||
{"segm" , s_segm , 1},
|
||||
{"unsegm" , s_segm , 0},
|
||||
{"unseg" , s_segm , 0},
|
||||
{"name" , s_app_file , 0},
|
||||
{"name" , s_file , 0},
|
||||
{"global" , s_globl , 0},
|
||||
{"wval" , cons , 2},
|
||||
{"lval" , cons , 4},
|
||||
|
@ -1128,7 +1128,7 @@ dwarf2_emit_label (symbolS *label)
|
||||
}
|
||||
|
||||
/* Handle two forms of .file directive:
|
||||
- Pass .file "source.c" to s_app_file
|
||||
- Pass .file "source.c" to s_file
|
||||
- Handle .file 1 "source.c" by adding an entry to the DWARF-2 file table
|
||||
|
||||
If an entry is added to the file table, return a pointer to the filename. */
|
||||
@ -1146,7 +1146,7 @@ dwarf2_directive_filename (void)
|
||||
SKIP_WHITESPACE ();
|
||||
if (*input_line_pointer == '"')
|
||||
{
|
||||
s_app_file (0);
|
||||
s_file (0);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
@ -2312,7 +2312,7 @@ add_file (const char *file_name, int indx ATTRIBUTE_UNUSED, int fake)
|
||||
compiler output, only in hand coded assembler. */
|
||||
|
||||
void
|
||||
ecoff_new_file (const char *name, int appfile ATTRIBUTE_UNUSED)
|
||||
ecoff_new_file (const char *name)
|
||||
{
|
||||
if (cur_file_ptr != NULL && filename_cmp (cur_file_ptr->name, name) == 0)
|
||||
return;
|
||||
|
@ -37,7 +37,7 @@ extern void ecoff_read_begin_hook (void);
|
||||
|
||||
/* This function should be called when the assembler switches to a new
|
||||
file. */
|
||||
extern void ecoff_new_file (const char *, int);
|
||||
extern void ecoff_new_file (const char *);
|
||||
|
||||
/* This function should be called when a new symbol is created, by
|
||||
obj_symbol_new_hook. */
|
||||
|
@ -445,9 +445,7 @@ bump_line_counters (void)
|
||||
|
||||
/* Tells us what the new logical line number and file are.
|
||||
If the line_number is -1, we don't change the current logical line
|
||||
number. If it is -2, we decrement the logical line number (this is
|
||||
to support the .appfile pseudo-op inserted into the stream by
|
||||
do_scrub_chars).
|
||||
number.
|
||||
If fname is NULL, we don't change the current logical file name, unless
|
||||
bit 3 of flags is set.
|
||||
Returns nonzero if the filename actually changes. */
|
||||
|
@ -256,7 +256,7 @@ buffer_and_nest (const char *from, const char *to, sb *ptr,
|
||||
|
||||
ptr->ptr[ptr->len] = '\0';
|
||||
temp_ilp (ptr->ptr + i + 8);
|
||||
s_app_line (0);
|
||||
s_linefile (0);
|
||||
restore_ilp ();
|
||||
ptr->ptr[ptr->len] = saved_eol_char;
|
||||
ptr->len = line_start;
|
||||
|
@ -42,7 +42,7 @@ struct format_ops {
|
||||
unsigned dfl_leading_underscore : 1;
|
||||
unsigned emit_section_symbols : 1;
|
||||
void (*begin) (void);
|
||||
void (*app_file) (const char *, int);
|
||||
void (*app_file) (const char *);
|
||||
void (*frob_symbol) (symbolS *, int *);
|
||||
void (*frob_file) (void);
|
||||
void (*frob_file_before_adjust) (void);
|
||||
|
143
gas/read.c
143
gas/read.c
@ -412,10 +412,8 @@ static const pseudo_typeS potable[] = {
|
||||
{"exitm", s_mexit, 0},
|
||||
/* extend */
|
||||
{"extern", s_ignore, 0}, /* We treat all undef as ext. */
|
||||
{"appfile", s_app_file, 1},
|
||||
{"appline", s_app_line, 1},
|
||||
{"fail", s_fail, 0},
|
||||
{"file", s_app_file, 0},
|
||||
{"file", s_file, 0},
|
||||
{"fill", s_fill, 0},
|
||||
{"float", float_cons, 'f'},
|
||||
{"format", s_ignore, 0},
|
||||
@ -448,7 +446,7 @@ static const pseudo_typeS potable[] = {
|
||||
{"irepc", s_irp, 1},
|
||||
{"lcomm", s_lcomm, 0},
|
||||
{"lflags", s_ignore, 0}, /* Listing flags. */
|
||||
{"linefile", s_app_line, 0},
|
||||
{"linefile", s_linefile, 0},
|
||||
{"linkonce", s_linkonce, 0},
|
||||
{"list", listing_list, 1}, /* Turn listing on. */
|
||||
{"llen", listing_psize, 1},
|
||||
@ -2000,15 +1998,11 @@ s_data (int ignore ATTRIBUTE_UNUSED)
|
||||
demand_empty_rest_of_line ();
|
||||
}
|
||||
|
||||
/* Handle the .appfile pseudo-op. This is automatically generated by
|
||||
do_scrub_chars when a preprocessor # line comment is seen with a
|
||||
file name. This default definition may be overridden by the object
|
||||
or CPU specific pseudo-ops. This function is also the default
|
||||
definition for .file; the APPFILE argument is 1 for .appfile, 0 for
|
||||
.file. */
|
||||
/* Handle the .file pseudo-op. This default definition may be overridden by
|
||||
the object or CPU specific pseudo-ops. */
|
||||
|
||||
void
|
||||
s_app_file_string (char *file, int appfile ATTRIBUTE_UNUSED)
|
||||
s_file_string (char *file)
|
||||
{
|
||||
#ifdef LISTING
|
||||
if (listing)
|
||||
@ -2016,12 +2010,12 @@ s_app_file_string (char *file, int appfile ATTRIBUTE_UNUSED)
|
||||
#endif
|
||||
register_dependency (file);
|
||||
#ifdef obj_app_file
|
||||
obj_app_file (file, appfile);
|
||||
obj_app_file (file);
|
||||
#endif
|
||||
}
|
||||
|
||||
void
|
||||
s_app_file (int appfile)
|
||||
s_file (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
char *s;
|
||||
int length;
|
||||
@ -2029,8 +2023,7 @@ s_app_file (int appfile)
|
||||
/* Some assemblers tolerate immediately following '"'. */
|
||||
if ((s = demand_copy_string (&length)) != 0)
|
||||
{
|
||||
int may_omit
|
||||
= (!new_logical_line_flags (s, -1, 1) && appfile);
|
||||
new_logical_line_flags (s, -1, 1);
|
||||
|
||||
/* In MRI mode, the preprocessor may have inserted an extraneous
|
||||
backquote. */
|
||||
@ -2040,8 +2033,7 @@ s_app_file (int appfile)
|
||||
++input_line_pointer;
|
||||
|
||||
demand_empty_rest_of_line ();
|
||||
if (!may_omit)
|
||||
s_app_file_string (s, appfile);
|
||||
s_file_string (s);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2058,21 +2050,19 @@ get_linefile_number (int *flag)
|
||||
return 1;
|
||||
}
|
||||
|
||||
/* Handle the .appline pseudo-op. This is automatically generated by
|
||||
/* Handle the .linefile pseudo-op. This is automatically generated by
|
||||
do_scrub_chars when a preprocessor # line comment is seen. This
|
||||
default definition may be overridden by the object or CPU specific
|
||||
pseudo-ops. */
|
||||
|
||||
void
|
||||
s_app_line (int appline)
|
||||
s_linefile (int ignore ATTRIBUTE_UNUSED)
|
||||
{
|
||||
char *file = NULL;
|
||||
int linenum, flags = 0;
|
||||
|
||||
/* The given number is that of the next line. */
|
||||
if (appline)
|
||||
linenum = get_absolute_expression ();
|
||||
else if (!get_linefile_number (&linenum))
|
||||
if (!get_linefile_number (&linenum))
|
||||
{
|
||||
ignore_rest_of_line ();
|
||||
return;
|
||||
@ -2094,65 +2084,60 @@ s_app_line (int appline)
|
||||
{
|
||||
int length = 0;
|
||||
|
||||
if (!appline)
|
||||
SKIP_WHITESPACE ();
|
||||
|
||||
if (*input_line_pointer == '"')
|
||||
file = demand_copy_string (&length);
|
||||
else if (*input_line_pointer == '.')
|
||||
{
|
||||
SKIP_WHITESPACE ();
|
||||
|
||||
if (*input_line_pointer == '"')
|
||||
file = demand_copy_string (&length);
|
||||
else if (*input_line_pointer == '.')
|
||||
{
|
||||
/* buffer_and_nest() may insert this form. */
|
||||
++input_line_pointer;
|
||||
flags = 1 << 3;
|
||||
}
|
||||
|
||||
if (file)
|
||||
{
|
||||
int this_flag;
|
||||
|
||||
while (get_linefile_number (&this_flag))
|
||||
switch (this_flag)
|
||||
{
|
||||
/* From GCC's cpp documentation:
|
||||
1: start of a new file.
|
||||
2: returning to a file after having included
|
||||
another file.
|
||||
3: following text comes from a system header file.
|
||||
4: following text should be treated as extern "C".
|
||||
|
||||
4 is nonsensical for the assembler; 3, we don't
|
||||
care about, so we ignore it just in case a
|
||||
system header file is included while
|
||||
preprocessing assembly. So 1 and 2 are all we
|
||||
care about, and they are mutually incompatible.
|
||||
new_logical_line_flags() demands this. */
|
||||
case 1:
|
||||
case 2:
|
||||
if (flags && flags != (1 << this_flag))
|
||||
as_warn (_("incompatible flag %i in line directive"),
|
||||
this_flag);
|
||||
else
|
||||
flags |= 1 << this_flag;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case 4:
|
||||
/* We ignore these. */
|
||||
break;
|
||||
|
||||
default:
|
||||
as_warn (_("unsupported flag %i in line directive"),
|
||||
this_flag);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!is_end_of_line[(unsigned char)*input_line_pointer])
|
||||
file = 0;
|
||||
}
|
||||
/* buffer_and_nest() may insert this form. */
|
||||
++input_line_pointer;
|
||||
flags = 1 << 3;
|
||||
}
|
||||
|
||||
if (appline || file || flags)
|
||||
if (file)
|
||||
{
|
||||
int this_flag;
|
||||
|
||||
while (get_linefile_number (&this_flag))
|
||||
switch (this_flag)
|
||||
{
|
||||
/* From GCC's cpp documentation:
|
||||
1: start of a new file.
|
||||
2: returning to a file after having included another file.
|
||||
3: following text comes from a system header file.
|
||||
4: following text should be treated as extern "C".
|
||||
|
||||
4 is nonsensical for the assembler; 3, we don't care about,
|
||||
so we ignore it just in case a system header file is
|
||||
included while preprocessing assembly. So 1 and 2 are all
|
||||
we care about, and they are mutually incompatible.
|
||||
new_logical_line_flags() demands this. */
|
||||
case 1:
|
||||
case 2:
|
||||
if (flags && flags != (1 << this_flag))
|
||||
as_warn (_("incompatible flag %i in line directive"),
|
||||
this_flag);
|
||||
else
|
||||
flags |= 1 << this_flag;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case 4:
|
||||
/* We ignore these. */
|
||||
break;
|
||||
|
||||
default:
|
||||
as_warn (_("unsupported flag %i in line directive"),
|
||||
this_flag);
|
||||
break;
|
||||
}
|
||||
|
||||
if (!is_end_of_line[(unsigned char)*input_line_pointer])
|
||||
file = NULL;
|
||||
}
|
||||
|
||||
if (file || flags)
|
||||
{
|
||||
linenum--;
|
||||
new_logical_line_flags (file, linenum, flags);
|
||||
@ -2162,7 +2147,7 @@ s_app_line (int appline)
|
||||
#endif
|
||||
}
|
||||
}
|
||||
if (appline || file || flags)
|
||||
if (file || flags)
|
||||
demand_empty_rest_of_line ();
|
||||
else
|
||||
ignore_rest_of_line ();
|
||||
|
@ -164,9 +164,9 @@ extern void bss_alloc (symbolS *, addressT, unsigned);
|
||||
extern offsetT parse_align (int);
|
||||
extern symbolS *s_comm_internal (int, symbolS *(*) (int, symbolS *, addressT));
|
||||
extern symbolS *s_lcomm_internal (int, symbolS *, addressT);
|
||||
extern void s_app_file_string (char *, int);
|
||||
extern void s_app_file (int);
|
||||
extern void s_app_line (int);
|
||||
extern void s_file_string (char *);
|
||||
extern void s_file (int);
|
||||
extern void s_linefile (int);
|
||||
extern void s_bundle_align_mode (int);
|
||||
extern void s_bundle_lock (int);
|
||||
extern void s_bundle_unlock (int);
|
||||
|
Loading…
x
Reference in New Issue
Block a user