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


Quelle  bionic_missing_funcs.cpp   Sprache: C

 
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */


#include <errno.h>        // For EPERM
#include <sys/syscall.h>  // For syscall()
#include <unistd.h>

#include "mozilla/Assertions.h"

extern "C" {

#if defined(__ANDROID_API__) && (__ANDROID_API__ < 24)

// Bionic introduced support for getgrgid_r() and getgrnam_r() only in version
// 24 (that is Android Nougat / 7.0). Since GeckoView is built with version 21,
// those functions aren't defined, but nix needs them and minidump-writer
// relies on nix. These functions should never be called in practice hence we
// implement them only to satisfy nix linking requirements but we crash if we
// accidentally enter them.

int getgrgid_r(gid_t gid, struct group* grp, char* buf, size_t buflen,
               struct group** result) {
  MOZ_CRASH("getgrgid_r() is not available");
  return EPERM;
}

int getgrnam_r(const char* name, struct group* grp, char* buf, size_t buflen,
               struct group** result) {
  MOZ_CRASH("getgrnam_r() is not available");
  return EPERM;
}

#endif  // __ANDROID_API__ && (__ANDROID_API__ < 24)

#if defined(__ANDROID_API__) && (__ANDROID_API__ < 23)

// Bionic introduced support for process_vm_readv() and process_vm_writev() only
// in version 23 (that is Android Marshmallow / 6.0). Since GeckoView is built
// on version 21, those functions aren't defined, but nix needs them and
// minidump-writer actually calls them.

ssize_t process_vm_readv(pid_t pid, const struct iovec* local_iov,
                         unsigned long int liovcnt,
                         const struct iovec* remote_iov,
                         unsigned long int riovcnt, unsigned long int flags) {
  return syscall(__NR_process_vm_readv, pid, local_iov, liovcnt, remote_iov,
                 riovcnt, flags);
}

ssize_t process_vm_writev(pid_t pid, const struct iovec* local_iov,
                          unsigned long int liovcnt,
                          const struct iovec* remote_iov,
                          unsigned long int riovcnt, unsigned long int flags) {
  return syscall(__NR_process_vm_writev, pid, local_iov, liovcnt, remote_iov,
                 riovcnt, flags);
}

#endif  // defined(__ANDROID_API__) && (__ANDROID_API__ < 23)
}

Messung V0.5
C=74 H=100 G=87

¤ Dauer der Verarbeitung: 0.0 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

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

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....
    

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge