89d123106a
This adds the following commits from upstream: 756ffc4f52f6 Build pylibfdt as part of the normal build process 8cb3896358e9 Adjust libfdt.h to work with swig b40aa8359aff Mention pylibfdt in the documentation 12cfb740cc76 Add tests for pylibfdt 50f250701631 Add an initial Python library for libfdt cdbb2b6c7a3a checks: Warn on node name unit-addresses with '0x' or leading 0s 4c15d5da17cc checks: Add bus checks for simple-bus buses 33c3985226d3 checks: Add bus checks for PCI buses 558cd81bdd43 dtc: Bump version to v1.4.4 c17a811c62eb fdtput: Remove star from value_len documentation 194d5caaefcb fdtget: Use @return to document the return value d922ecdd017b tests: Make realloc_fdt() really allocate *fdt 921cc17fec29 libfdt: overlay: Check the value of the right variable 9ffdf60bf463 dtc: Simplify asm_emit_string() implementation 881012e44386 libfdt: Change names of sparse helper macros bad5b28049e5 Fix assorted sparse warnings 672ac09ea04d Clean up gcc attributes 49300f2ade6a dtc: Don't abuse struct fdt_reserve_entry fa8bc7f928ac dtc: Bump version to v1.4.3 34a9886a177f Add printf format attributes f72508e2b6ca Correct some broken printf() like format mismatches 397d5ef0203c libfdt: Add fdt_setprop_empty() 69a1bd6ad3f9 libfdt: Remove undefined behaviour setting empty properties acd1b534a592 Print output filename as part of warning messages 120775eb1cf3 dtc: Use streq() in preference to strcmp() 852e9ecbe197 checks: Add Warning for stricter node name character checking ef0e8f061534 checks: Add Warning for stricter property name character checking 00d7bb1f4b0e dtc: pos parameter to srcpos_string() can't be NULL 95d57726bca4 livetree.c: Fix memory leak 3b9c97093d6e dtc: Fix NULL pointer use in dtlabel + dtref case 43eb551426ea manual: Fix typo it -> in 4baf15f7f13f Makefile: Add tags rule Signed-off-by: Rob Herring <robh@kernel.org>
118 lines
3.5 KiB
C
118 lines
3.5 KiB
C
/*
|
|
* Copyright 2007 Jon Loeliger, Freescale Semiconductor, Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
|
* USA
|
|
*/
|
|
|
|
#ifndef _SRCPOS_H_
|
|
#define _SRCPOS_H_
|
|
|
|
#include <stdio.h>
|
|
#include <stdbool.h>
|
|
#include "util.h"
|
|
|
|
struct srcfile_state {
|
|
FILE *f;
|
|
char *name;
|
|
char *dir;
|
|
int lineno, colno;
|
|
struct srcfile_state *prev;
|
|
};
|
|
|
|
extern FILE *depfile; /* = NULL */
|
|
extern struct srcfile_state *current_srcfile; /* = NULL */
|
|
|
|
/**
|
|
* Open a source file.
|
|
*
|
|
* If the source file is a relative pathname, then it is searched for in the
|
|
* current directory (the directory of the last source file read) and after
|
|
* that in the search path.
|
|
*
|
|
* We work through the search path in order from the first path specified to
|
|
* the last.
|
|
*
|
|
* If the file is not found, then this function does not return, but calls
|
|
* die().
|
|
*
|
|
* @param fname Filename to search
|
|
* @param fullnamep If non-NULL, it is set to the allocated filename of the
|
|
* file that was opened. The caller is then responsible
|
|
* for freeing the pointer.
|
|
* @return pointer to opened FILE
|
|
*/
|
|
FILE *srcfile_relative_open(const char *fname, char **fullnamep);
|
|
|
|
void srcfile_push(const char *fname);
|
|
bool srcfile_pop(void);
|
|
|
|
/**
|
|
* Add a new directory to the search path for input files
|
|
*
|
|
* The new path is added at the end of the list.
|
|
*
|
|
* @param dirname Directory to add
|
|
*/
|
|
void srcfile_add_search_path(const char *dirname);
|
|
|
|
struct srcpos {
|
|
int first_line;
|
|
int first_column;
|
|
int last_line;
|
|
int last_column;
|
|
struct srcfile_state *file;
|
|
};
|
|
|
|
#define YYLTYPE struct srcpos
|
|
|
|
#define YYLLOC_DEFAULT(Current, Rhs, N) \
|
|
do { \
|
|
if (N) { \
|
|
(Current).first_line = YYRHSLOC(Rhs, 1).first_line; \
|
|
(Current).first_column = YYRHSLOC(Rhs, 1).first_column; \
|
|
(Current).last_line = YYRHSLOC(Rhs, N).last_line; \
|
|
(Current).last_column = YYRHSLOC (Rhs, N).last_column; \
|
|
(Current).file = YYRHSLOC(Rhs, N).file; \
|
|
} else { \
|
|
(Current).first_line = (Current).last_line = \
|
|
YYRHSLOC(Rhs, 0).last_line; \
|
|
(Current).first_column = (Current).last_column = \
|
|
YYRHSLOC(Rhs, 0).last_column; \
|
|
(Current).file = YYRHSLOC (Rhs, 0).file; \
|
|
} \
|
|
} while (0)
|
|
|
|
|
|
/*
|
|
* Fictional source position used for IR nodes that are
|
|
* created without otherwise knowing a true source position.
|
|
* For example,constant definitions from the command line.
|
|
*/
|
|
extern struct srcpos srcpos_empty;
|
|
|
|
extern void srcpos_update(struct srcpos *pos, const char *text, int len);
|
|
extern struct srcpos *srcpos_copy(struct srcpos *pos);
|
|
extern char *srcpos_string(struct srcpos *pos);
|
|
|
|
extern void PRINTF(3, 0) srcpos_verror(struct srcpos *pos, const char *prefix,
|
|
const char *fmt, va_list va);
|
|
extern void PRINTF(3, 4) srcpos_error(struct srcpos *pos, const char *prefix,
|
|
const char *fmt, ...);
|
|
|
|
extern void srcpos_set_line(char *f, int l);
|
|
|
|
#endif /* _SRCPOS_H_ */
|