Eine aufbereitete Darstellung der Quelle

 
     
 
 
Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 

Benutzer

Quelle  llvm-c-helpers.h

  Sprache: C
 

/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __PERF_LLVM_C_HELPERS
#define __PERF_LLVM_C_HELPERS 1

/*
 * Helpers to call into LLVM C++ code from C, for the parts that do not have
 * C APIs.
 */


#include <linux/compiler.h>

#ifdef __cplusplus
extern "C" {
#endif

struct dso;

struct llvm_a2l_frame {
  char* filename;
  char* funcname;
  unsigned int line;
};

/*
 * Implement addr2line() using libLLVM. LLVM is a C++ API, and
 * many of the linux/ headers cannot be included in a C++ compile unit,
 * so we need to make a little bridge code here. llvm_addr2line() will
 * convert the inline frame information from LLVM's internal structures
 * and put them into a flat array given in inline_frames. The caller
 * is then responsible for taking that array and convert it into perf's
 * regular inline frame structures (which depend on e.g. struct list_head).
 *
 * If the address could not be resolved, or an error occurred (e.g. OOM),
 * returns 0. Otherwise, returns the number of inline frames (which means 1
 * if the address was not part of an inlined function). If unwind_inlines
 * is set and the return code is nonzero, inline_frames will be set to
 * a newly allocated array with that length. The caller is then responsible
 * for freeing both the strings and the array itself.
 */

int llvm_addr2line(const char* dso_name,
                   u64 addr,
                   char** file,
                   unsigned int* line,
                   bool unwind_inlines,
                   struct llvm_a2l_frame** inline_frames);

/*
 * Simple symbolizers for addresses; will convert something like
 * 0x12345 to "func+0x123". Will return NULL if no symbol was found.
 *
 * The returned value must be freed by the caller, with free().
 */

char *llvm_name_for_code(struct dso *dso, const char *dso_name, u64 addr);
char *llvm_name_for_data(struct dso *dso, const char *dso_name, u64 addr);

#ifdef __cplusplus
}
#endif

#endif /* __PERF_LLVM_C_HELPERS */

Messung V0.5 in Prozent
C=96 H=92 G=93

¤ Dauer der Verarbeitung: 0.21 Sekunden  (vorverarbeitet am  2026-06-07) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Open Source Software

     Quellcodebibliothek
     Eigene Quellcodes
     Fremde Quellcodes
     Suchen

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Statistik
#Sources=277311
#Domains=752002